Как скомпилировать только один файл в С#?

В 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