Visual Studio 2015 UP1始终重建我的C#netmodule-output项目。可以修复吗?

时间:2016-01-21 05:05:28

标签: c# msbuild netmodules

我有一个名为&#39; X&#39;的C#项目, 我修改了X.csproj文件,并将no-2.php更改为<OutputType>Library</OutputType> 这意味着我现在正在输出.netmodule文件而不是.dll文件,这很酷,我可以使用netmodules作为C ++ / CLI项目的输入。

但是,Visual Studio坚持在每个构建上重新编译项目,并且 当我将构建输出详细程度转换为&#39; diagnostic&#39;时,我在输出中看到这一行:

  

项目&#39; X&#39;不是最新的。缺少输出文件   &#39; C:... \ X \ BIN \调试\ X.exe&#39;

问题当然是编译器正在输出X.netmodule而不是X.exe,因此永远不会找到X.exe,因此我的项目在每次构建时都会重新编译。 更糟糕的是,如果我从csproj上的命令行运行msbuild,则会发生正确的行为,即只有在项目中的文件发生更改时才重建。

这让我相信VS2015 [或其他人]正在计算最终的输出名称,因为我已经为<OutputType>Module</OutputType>指定了模块,并且它是VS2015强制重新构建,而不是Msbuild。

我知道修改.csproj的<OutputType>是非标准的,并且不受支持,但似乎这个方法正在被其他人使用,这似乎是一个已知的问题,可能解决方法。

提前致谢。

1 个答案:

答案 0 :(得分:1)

好的,我很想听到其他人对此有所了解,但我确实想出了一个解决方法。 我只是向Properties&gt; Build Events&gt; Post-build event命令行添加了一个复制命令。

  

复制$(TargetDir)$(TargetName).netmodule   $(TARGETDIR)$(的TargetName).EXE

这意味着当VS查找exe(而不是.netmodule)时,它会找到它,并且它与.netmodule具有相同的日期,因此VS的逻辑是否应该重新构建,应该更正