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