c# - How can I reference a project without linking to it in a csproj? -
i have test project runs program (a .exe) , ensures results come out expected.
i'd declare test project depends on project builds .exe, , place .exe drop subdirectory of $(outdir) (or $(outputpath)).
$(outdir)mytests.dll(test project)$(outdir)\product\foo.exe(tested project)$(outdir)\product\xxx.dll(dependencies of tested project)
this way can write test of form:
[testclass] [deploymentitem("product", "product")] public class runfoo { [testmethod] public void helptextmatches() { // system.diagnostics.process.start("product\foo.exe" ...) } } is there way declare <projectreference in test .csproj file allow me achieve this?
(i don't want have <copy task grabbing outputs of program under test because there's nothing force msbuild build program under test before test project.)
i don't quite understand reasons not using projectreference, adding projectreference except without added assembly references.
<itemgroup> <extradependencies include="exeproject.csproj" /> </itemgroup> <target name="getextradependenciestargets"> <msbuild projects="@(extradependencies)" targets="gettargetpath"> <output taskparameter="targetoutputs" itemname="resolveddependencytargets" /> </msbuild> </target> <target name="buildextradependencies" beforetargets="beforebuild" dependsontargets="getextradependenciestargets" inputs="@(extradependencies)" outputs="@(resolveddependencytargets)"> <msbuild projects="@(extradependencies)" targets="build"> <output taskparameter="targetoutputs" itemname="builtdependencytargets" /> </msbuild> </target> alternatively, keep projectreference hijack build process right after resolveprojectreferences target , remove exe dependency (from _resolvedprojectreferencepaths).
Comments
Post a Comment