Полагаю, вы используете команду типа msbuild xx.sln
вместо msbuild xx.csproj
.И это будет иметь большое значение.
Вы должны выяснить разницу между Solution Platform
и Project Platform
.В vs щелкните правой кнопкой мыши решение и выберите Configuration Manager
, вы увидите что-то вроде:
Когда я использую команду: msbuild xx.sln -p:Platform=TestPlatform
, так какэто решение имеет только проект ConsoleApp1, теперь оно фактически представляет команду msbuild ConsoleApp1.csproj -p:Platform=AnyCpu
.Я думаю, что у вас похожая ситуация:
Обновление: Может быть, вы можете определить пользовательское свойство в xx.csproj так:
<PropertyGroup>
...
<Platforms>AnyCPU;x64;x86</Platforms>
<RemoveOrNot>false</RemoveOrNot>
</PropertyGroup>
<ItemGroup>
<Compile Remove="ERROR.cs" Condition=" '$(RemoveOrNot)' == 'true' " />
</ItemGroup>
Это работает длятакие команды, как msbuild xx.sln -RemoveOrNot= true
или msbuild xx.csproj -RemoveOrNot= true
.