Visual Studio 2015 UP1 总是重建我的 C# 网络模块输出项目.可以修复吗?



我有一个名为"X"的C#项目,我修改了 X.csproj 文件,并将<OutputType>Library</OutputType>更改为<OutputType>Module</OutputType>这意味着我现在输出 .netmodule 文件而不是.dll文件,这很酷,我可以使用网络模块作为 C++/CLI 项目的输入。

但是,Visual Studio坚持在每次构建时重新编译项目,并且当我将构建输出详细程度转换为"诊断"时,我在输出中看到以下行:

项目"X"不是最新的。缺少输出文件 'C:...\X\bin\Debug\X.exe'.

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

这让我相信VS2015 [或其他]计算最终输出名称不正确,因为我为<OutputType>指定了模块,并且是VS2015强制重建,而不是Msbuild。

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

提前谢谢。

好的,我很想听听其他对此有洞察力的人的意见,但我确实想出了一个解决方法。我只是在属性>构建事件>构建后事件命令行中添加了一个复制命令。

copy $(

TargetDir)$(TargetName).netmodule $(TargetDir)$(TargetName).exe

这意味着当 VS 查找 exe(而不是 .netmodule)时,它会找到它,并且它的日期与 .netmodule 相同,因此 VS 关于是否重建的逻辑应该得到纠正。

最新更新