Это, кажется, ошибка в Visual Studio, когда проект имеет XML documentation file
проверил некоторые файлы с Copy always
.
Репро:
- Создать новый проект - C# библиотеки классов.
- Свойства проекта => Build => проверить
XML documentation file
- Project => Add => New Item => Текстовый файл
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, вы видите, что devenv.exe переименовывает «ClassLibrary1.XML» в «vsA381.tmp» перед запуском MSBuild.exe. Трассировка стека для переименования:
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 Update 2, и я вижу такое же нежелательное поведение: проекты перекомпилированы, когда никаких изменений не произошло с исходным кодом. Это происходит, даже если у меня нет файла документации XML, проверенного в любых проектах моего решения. Так что есть и другие причины. :-( – farfareast
Ну, вы можете исследовать его описанным в моем ответе ниже и сообщить о своих выводах. – Jonathan