我的解决方案项目之一取决于另一种解决方案:不会经常更改的代码.要从主解决方案中排除此代码,我引用了生成的il-merged dll,并将下一个代码添加到项目文件中:
<Target Name="BeforeBuild">
<MsBuild Projects="$(PathToAnotherSolutionFile)" Properties="Configuration=$(Configuration)" Condition="!Exists($(AnotherSolutionDll))"/>
</Target>
因此,外部解决方案仅在新结账时构建一次.这是期望的行为,如果从命令行启动,它将按预期工作.但是如果要从Visual Studio构建解决方案,则由于某种原因不会执行MsBuild任务.
但是,如果在“项目”中放置单个项目而不是解决方案,则执行它.
对这种行为有没有有意义的解释,有没有办法解决它?
最佳答案 好的,这是解决方法:
<Target Name="BeforeBuild">
<Exec Command="$(MSBuildBinPath)\msbuild $(PathToAnotherSolutionFile) /p:Configuration=$(Configuration)" Condition="!Exists($(AnotherSolutionDll))"/>
</Target>
这是愚蠢的,但它确实有效.但是,为什么它不起作用的问题仍然是开放的.