這似乎是在Visual Studio中的一個bug,當項目有XML documentation file
查了一些文件與Copy always
。
攝製:
- 創建新項目 - C#類庫。
- 項目屬性=>生成=>檢查
XML documentation file
- 項目=>添加=>新項目=>文本文件
TextFile1.txt
- 變化TextFile1.txt
Copy to Output Directory
到Copy always
- 右擊項目=>打造
- 右擊項目=>建立
預計:項目不應該建,建輸出應該說:
========== Build: 0 succeeded, 0 failed, 1 up-to-date, 0 skipped ==========
實際:項目是建,輸出是:
------ Build started: Project: ClassLibrary1, Configuration: Debug Any CPU ------
ClassLibrary1 -> bin\Debug\ClassLibrary1.dll
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
Intestigation:車削在詳細日誌中,您會看到:
Target "CoreCompile" in file "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.CSharp.targets" from project "ClassLibrary1.csproj" (target "Compile" depends on it):
Building target "CoreCompile" completely.
Output file "bin\Debug\ClassLibrary1.XML" does not exist.
尋找procmon,你會發現在MSBuild.exe運行之前,devenv.exe將「ClassLibrary1.XML」重命名爲「vsA381.tmp」。重命名堆棧跟蹤:
KERNEL32!MoveFileW+0x17
csproj!CMoveOutOfTheWayScope::EnterScope+0x85
csproj!CVsProjBuildableProjectCfg::StartBuildProcessWithTarget+0x50b
csproj!CVsProjBuildableProjectCfg::StartBuildProcess+0xc
csproj!CVsProjBuildableProjectCfg::StartBuildEx+0x15
msenv!CSUIBuilder::DoBuild+0x1a3
msenv!CSUIBuilder::Run+0x66
我使用VS 2013更新2,我看到相同的不想要的行爲:當源代碼沒有發生任何更改時重新編譯項目。即使我沒有在我的解決方案的任何項目中選中「XML文檔文件」,也會發生這種情況。所以還有其他原因。 :-( – farfareast
好吧,你可以在下面我的回答中對它進行調查,並報告你的發現。 – Jonathan