Скомпилируйте вручную полный проект C # с несколькими файлами, библиотеками - PullRequest
0 голосов
/ 26 мая 2018

Я создал проект большего размера в Microsoft Visual Studio, используя C #.Что происходит, когда я позволяю IDE собрать проект: файл dll создается в каталоге / bin .

Теперь я хочу вручную скомпилировать все это в консоли (компилятор csc),Я пытался, но это так и не сработало.

Каталоги структурированы следующим образом: основной каталог с актуальными файлами проекта (один «главный файл»), каталог bin и каталог lib с дополнительными файлами .csна которые есть ссылки в моем проекте.

Что мне нужно набрать в консоли, чтобы получить точно такой же результат, как и в компоновщике IDE ?

Заранее спасибо залюбая помощь:)

Ответы [ 2 ]

0 голосов
/ 27 мая 2018

Один из способов сделать это - использовать « msbuild », который представляет собой движок с открытым исходным кодом , который Visual Studio использует для создания приложений.Файлы проекта (.csproj) в основном содержат различные конфигурации сборки в формате XML, который используется этим движком при сборке нашего проекта.С помощью msbuild вы можете построить свой проект следующим образом:

msbuild.exe MyProj.proj /property:Configuration=Debug

Он также имеет множество других опций и переключателей, которые помогают создавать проекты вручную (см. this )

В случае, если из-за соображений производительности вам приходится собирать вручную или выборочно, я бы хотел упомянуть, что есть возможность создавать несколько проектов параллельно, чтобы ускорить процесс.Существует переключатель «maxcpucount», который мы можем использовать для определения «msbuild» максимального количества проектов, которые могут быть построены параллельно (см. this ).Вы можете использовать его следующим образом:

msbuild.exe myproj.proj /maxcpucount:3  

Вот еще несколько свойств, которые можно использовать для лучшего управления памятью (см. this )

Если вы хотите скомпилировать отдельныефайлы в исполняемые файлы ( .exe ) или библиотеки ( .dll ), вы можете использовать компилятор CSharp ( csc ).Его можно использовать следующим образом:

Компилирует File.cs, создающий File.exe:

csc File.cs

Компилирует File.cs, создающий File.dll:

csc -target:library File.cs

КомпилируетFile.cs и создает My.exe:

csc -out:My.exe File.cs

Компилирует все файлы C # в текущем каталоге с включенной оптимизацией и определяет символ DEBUG.Вывод File2.exe:

csc -define:DEBUG -optimize -out:File2.exe *.cs

Компилирует все файлы C # в текущем каталоге, создавая отладочную версию File2.dll.Логотип и предупреждения не отображаются:

csc -target:library -out:File2.dll -warn:0 -nologo -debug *.cs

Компилирует все файлы C # в текущем каталоге в Something.xyz (DLL):

csc -target:library -out:Something.xyz *.cs

Подробнее здесь

Однако я не рекомендовал бы компилировать каждый файл вручную.Это можно сделать, используя команды, упомянутые выше, но для этого потребуется написать очень длинный скрипт оболочки.

0 голосов
/ 26 мая 2018

Если msbuild - опция, я бы использовал ее для компиляции всего проекта из командной строки:

msbuild YourProject.csproj
...