pathToLibrary.csproj действительно библиотека, поэтому я не знаю, почему msbuild пытается найти метод main. Здесь ничего нет. Это библиотека.
Когда ваш основной проект ссылается на проекты по Add Reference
-> Projects
, он всегда будет создавать не только основные проекты, но и ссылочные проекты одновременно. Поэтому, когда вы строите этот проект с помощью командной строки MSBuild, -property:OutputType=winexe
также будет применяться к этим ссылочным проектам. Когда вы создаете проект в VS IDE и MSBuild, вы увидите эту информацию в выходном журнале.
Если нет способа указать msbuild перезаписывать только OutputType для основного .csproj, редактирование каждого файла по отдельности должно будет сделать
Если вы просто хотите найти способ указать -property:OutputType=winexe
для основного проекта, а не ссылочные проекты из командной строки MSBuild, я думаю, что нет такой функции.
Или вы можете попробовать мои предложения :
1) удалите -property:OutputType=winexe
в командной строке MSBuild и при создании связанного проекта, вы уже указали тип вывода проекта, поэтому вам не нужно указывать его в MSBuild, который не является задачей MSBuild.
Примечание , что вы можете изменить свойство в xxx.csproj
прямо как <OutputType>WinExe</OutputType>
.
2) если вам все еще нужна эта функция при сборке проекта с помощью командной строки MSBuild, я предлагаю вам создать скрипт с именем Directory.Build.targets , который может перезаписать свойство OutputType
и затем построить проект отдельно с помощью MSBuild.
~ a) , пожалуйста, создайте файл с именем Directory.Build.targets
в каждая папка проекта, в которой существует файл xxxx.csproj
.
~ b) записать в него связанное свойство о проекте: (используйте Exe в консольном проекте, используйте WinExe в windows проекте и используйте Library в проект библиотеки классов.)
<Project>
<Target Name="inputproperty" BeforeTargets="AssignProjectConfiguration">
<PropertyGroup>
<OutputType>WinExe</OutputType>
</PropertyGroup>
</Target>
</Project>
напишите так в своем проекте MainProject , а затем создайте еще один Directory.Build.targets
в своем проекте pathToLibrary для использования <OutputType>Library</OutputType>
чтобы он оправдал ваши ожидания.