Как на C# скомпилировать и подключить другой файл не имея Visual Studio и дополнительных компиляторов?

Как на C# скомпилировать и подключить другой файл не имея Visual Studio и дополнительных компиляторов?
Суть в том. Указываю программе документ .pdf, .doc -она генерирует exe-шник и в него вшивает файл. А потом пользователь запускает exe, вводит,например,пароль и этот .pdf, .doc файл копируется в папку с приложением.
Читал, что .Net имеет компилятор и дополнительно на других компах никто не будет устанавливать ещё ПО.
  • Вопрос задан
  • 170 просмотров
Пригласить эксперта
Ответы на вопрос 2
yamaoto
@yamaoto
la programmeur
компилятор поставляется вместе с самим .net framework
и хранится в папках
c:\Windows\Microsoft.NET\Framework\v<версия>
c:\Windows\Microsoft.NET\Framework64\v<версия>

сам компилятор называется csc.exe

пример
csc.exe /debug+ /out:.\myAwesomeExtractor.exe program.cs extractor.cs filebindata.cs
Ответ написан
Комментировать
DarkRaven
@DarkRaven
разработка программного обеспечения
Еще, как вариант можно использовать msbuild.
Но тогда, вы должны понимать структуру csproj-файла.

На словах, в него нужно добавить что-то такое:
<ItemGroup>
    <EmbeddedResource Include="Some\Relative\Path\To\File.ext" />
</ItemGroup>


Это первая часть. Вторая часть, реализация копирования, тут собственно вам все карты в руки.

GetType().Assembly.GetManifestResourceNames()

даст все внедренные ресурсы,

GetType().Assembly.GetManifestResourceStream(name)

даст поток на внедренный ресурс по имени, хранящемся в переменной name. Поток уже пишете в файлы, если данного файла нет. Имя файлы можно взять из name, опять же.

Пересобрать solution через MSBuild тоже достаточно просто:

MsBuild.exe [Path to your solution(*.sln)] /t:Build /p:Configuration=Release /p:TargetFramework=v4.0

TargetFramework=v4.0 нужно ставить в зависимости от нужного фреймворка.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы