В настоящее время я переносю большое решение из старого формата файла csproj
в новый формат csproj
. Я делаю это несколько проектов одновременно, поэтому у меня смешанная среда, в которой некоторые проекты используют старый формат файла проекта, а некоторые проекты используют новый формат файла проекта.
Я начал замечать, что некоторые сборки не работают, потому что файлы используются. Моя теория (основанная на этот ответ ) заключается в том, что MSBuild строит несколько проектов дважды, потому что свойства различаются (то есть новый формат файла проекта задает свойство TargetFramework
, в то время как старые проекты этого не делают).
Проекты, которые, по-видимому, имеют проблемы параллелизма, являются проектами, на которые ссылаются другие проекты, где ссылочные проекты разделены между форматами файлов проекта.
Команда, которую я использую для создания проекта:
msbuild.exe /maxcpucount:6 /property:Configuration=Debug;Platform=x64 /t:Rebuild my.sln
Есть ли способ дать MSBuild команду на создание заданного проекта только один раз (независимо от свойств), пока я не смогу преобразовать все проекты в решении в новый формат файла проекта?
Обратите внимание, что сборка однопоточного кода устраняет проблемы параллелизма, но это значительно замедляет сборку, и проекты по-прежнему создаются несколько раз.