构建无法从 VisualStudio 运行,但可以从 msbuild 运行

2024-02-19

从 Visual Studio 中的全新控制台应用程序模板中,我编辑了.csproj构建另一个这样的项目:

...
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Target Name="BeforeBuild">
  <MSBuild Projects=".\other.mproj"/>
</Target>    
...

Where other.mproj is:

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">

   <Target Name="Build">
       <Message Text="kikou" />     
   </Target>

</Project>

过了一段时间我发现修改了内容other.mproj(例如,通过引入错误或更改文本kikou除非在 Visual Studio 中卸载/重新加载项目,否则不会考虑其他内容。

从命令行构建'msbuild myproj.csproj'立即检测到变化'other.mproj'。所以看起来 Visual Studio 正在使用缓存版本other.mproj file.

为什么 Visual Studio 会缓存其他脚本(甚至不包含在项目中),我该如何解决这个问题?

更新:我也尝试过这个使用HostCompiler如果可用 https://stackoverflow.com/a/2631760/684399,它不起作用。


NB1:我没有添加other.mproj作为项目参考.csproj因为它根本不是一个 .NET 项目(它只是为.csproj来自构建之前的其他输入)

NB2:我使用的是 VS2010 (10.0.10219.1SP1Rel + MSBuild 4.0.30319.1)


Visual Studio 会缓存所有 MSBuild 文件,这样做是出于性能原因。您将无法仅使用 MSBuild 来解决此问题。它may可以通过 VS 插件来实现这一点,但我不能 100% 确定这一点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

构建无法从 VisualStudio 运行,但可以从 msbuild 运行 的相关文章

随机推荐