我有一个名为' X'的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>
是非标准的,并且不受支持,但似乎这个方法正在被其他人使用,这似乎是一个已知的问题,可能解决方法。
提前致谢。
答案 0 :(得分:1)
好的,我很想听到其他人对此有所了解,但我确实想出了一个解决方法。 我只是向Properties&gt; Build Events&gt; Post-build event命令行添加了一个复制命令。
复制$(TargetDir)$(TargetName).netmodule $(TARGETDIR)$(的TargetName).EXE
这意味着当VS查找exe(而不是.netmodule)时,它会找到它,并且它与.netmodule具有相同的日期,因此VS的逻辑是否应该重新构建,应该更正