Как скомпилировать только один файл в С#?
В VС++ я могу нажать CTRL + F7 для компиляции одного файла или щелкнуть правой кнопкой мыши по исходному файлу и скомпилировать его.
Возможно ли скомпилировать один файл (или текущий файл) в С#?
Я хотел бы, например, узнать, есть ли у моего текущего файла какие-либо ошибки в нем, не компилируя все.
Ответы
Ответ 1
Нет, это невозможно сделать в С#.
В отличие от С++, файл С# не может быть скомпилирован на его основе, чтобы определить, есть ли у него какие-либо ошибки. С++ достигает этого с помощью инструкций #include
, которые позволяют файлу .cpp понимать объявление доступных типов. Эти объявления определяют структуру типов, от которых зависит текущий файл, и позволяет компилятору убедиться, что они используются в соответствии со спецификацией.
Этот процесс обрабатывается неявно в С#. Набор доступных объявлений - это просто набор всех объявлений во всех скомпилированных файлах, которые в противном случае доступны. Невозможно перенаправить объявления зависимостей в том, как это делает С++, и, следовательно, не позволяет гарантировать, что они используются правильно в одном файле.
Ответ 2
Для одиночного компиляции файла .cs + run:
- В VS 2008 перейдите в раздел "Инструменты" > "Внешние инструменты"
- Нажмите "Добавить"
- Заголовок: Запустите CSC (или что угодно)
- Команда: C:\Windows\system32\cmd.exe
- Аргументы:/c C:\Windows\Microsoft.NET\Framework\v3.5\csc.exe/target: winexe $(ItemPath) && & && & $(ItemFileName)
- Начальная директория: $(ItemDir)
- Проверить окно выходных данных
- Применить + Ok
- Перейдите в Инструменты и выберите "Запустить CSC"
Если это не работает, убедитесь, что ваши пути для cmd
и csc
совпадают.
Ответ 3
Инструмент надстройки Visual Studio, такой как ReSharper, является очень хорошей инвестицией для этой ситуации.
ReSharper выполняет непрерывный анализ всего кода в рамках всего решения и будет сообщать о проблемах, удобно отображая панель рядом с вашим файлом прокрутки кода \document, который имеет красные\оранжевые линии, обозначающие любые строки кода, которые имеют проблемы\ошибки. Отображаемые строки доступны для перехода к соответствующей строке, а также подсказки с подробными сведениями о том, какая именно проблема:
http://www.jetbrains.com/resharper/features/code_analysis.html#Continuous_Code_Quality_Analysis
<Предварительно > http://www.jetbrains.com/resharper/features/screenshots/50/marker_bar.png
Проблемы\предупреждения, которые может проверять ReSharper, настраиваются (но он имеет отличную конфигурацию из коробки), и может обозначать что-либо из ошибок, которые могут привести к тому, что код не будет компилировать более тонкие проблемы, обнаружил возможный результат вызова нулевого метода, который явно не проверен.
Ответ 4
В командной строке:
% windir%\Microsoft.Net\framework\V3.5\csc.exe/target: библиотека File.cs
Вы можете разумно связать это с контекстным меню исследователей решений через Tools- > External Tools
установить аргументы в /target: library $(ItemPath)
что-то подобное может делать то, что вы хотите. Хотя файл должен был зависеть от каких-либо других файлов в проекте или в бинарных файлах ссылок, кроме того, что в GAC.
Ответ 5
Shift-F6 скомпилирует текущую сборку, что почти то, что вы хотите.
Ответ 6
Да, это возможно. Вы можете напрямую вызвать компилятор с помощью командной строки. то есть.
- Создать один файл 'hello.cs'
- Откройте командную строку Visual Studio
- Перейдите в каталог, в котором есть "hello.cs"
- Выполнить
csc hello.cs
- Выполните один файл, набрав
hello.exe
Это, по крайней мере, скажет вам, скомпилирован ли один файл или нет. Вы можете найти более подробную информацию здесь: https://msdn.microsoft.com/en-us/library/78f4aasd.aspx
Ответ 7
Да, это можно сделать с помощью Mono.NET Framework. В командной строке запустите mcs path/to/file.cs
.
Из моно документов:
To compile, use csc:
csc hello.cs
Примечание: компилятор csc доступен не на всех платформах или в очень старых версиях Mono, в таких случаях вместо него используйте mcs.
Компилятор создаст "hello.exe", который вы можете запустить, используя:
mono hello.exe