visual-studio-2010 – Visual Studio 2010不会为构建事件中的解决方案执行msbuild任务.如何解决这个问题?

我的解决方案项目之一取决于另一种解决方案:不会经常更改的代码.要从主解决方案中排除此代码,我引用了生成的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>

这是愚蠢的,但它确实有效.但是,为什么它不起作用的问题仍然是开放的.

点赞