我有一个名为“X”的 C# 项目,我修改了 X.csproj 文件,并更改<OutputType>Library</OutputType>
为<OutputType>Module</OutputType>
这意味着我现在正在输出 .netmodule 文件而不是 .dll 文件,这很酷,我可以使用 netmodules 作为 C++ 的输入/CLI 项目。
但是,Visual Studio 坚持在每次构建时重新编译项目,当我将构建输出详细程度设置为“诊断”时,我在输出中看到了这一行:
项目“X”不是最新的。缺少输出文件“C:...\X\bin\Debug\X.exe”。
当然,问题在于编译器输出的是 X.netmodule,而不是 X.exe,因此永远找不到 X.exe,因此我的项目在每次构建时都重新编译。更糟糕的是,如果我从 csproj 上的命令行运行 msbuild,则会出现正确的行为,即它仅在项目中的文件发生更改时才重新构建。
这使我相信 VS2015 [或其他] 正在错误地计算最终输出名称,因为我已经为 指定了 Module <OutputType>
,并且是 VS2015 强制重新构建,而不是 Msbuild。
我知道修改<OutputType>
.csproj 是非标准的,并且不受支持,但似乎其他人正在使用这种方法,而且这似乎是一个已知问题,可能需要解决方法。
提前致谢。