Как скомпилировать только один файл в C #? - PullRequest
17 голосов
/ 23 июля 2010

В VC ++ я могу нажать CTRL + F7, чтобы скомпилировать один файл, или щелкнуть правой кнопкой мыши по исходному файлу или скомпилировать его.Можно ли скомпилировать один файл (или текущий файл) в C #?

Я хотел бы, например, знать, есть ли в моем текущем файле какие-либо ошибки без необходимости компилировать все.

Ответы [ 6 ]

12 голосов
/ 14 ноября 2012

Для одного файла .cs скомпилировать + запустить:

  1. В VS 2008 перейдите в «Инструменты»> «Внешние инструменты»
  2. Нажмите «Добавить»
  3. Заголовок: Запустите CSC (или как хотите)
  4. Команда: C: \ Windows \ system32 \ cmd.exe
  5. Аргументы: / c C: \ Windows \ Microsoft.NET \ Framework \ v3.5 \ csc.exe / target: winexe $ (ItemPath) && $ (ItemFileName)
  6. Начальный каталог: $ (ItemDir)
  7. Проверить использование окна вывода
  8. Применить + ОК
  9. Зайдите в Инструменты и выберите «Запустить CSC»

Если это не работает, убедитесь, что ваши пути для cmd и csc совпадают.

6 голосов
/ 23 июля 2010

Нет, это невозможно сделать в C #.

В отличие от C ++, файл C # не может быть разумно скомпилирован самостоятельно, чтобы определить, есть ли в нем ошибки. C ++ достигает этого с помощью операторов #include, что позволяет файлу .cpp понимать объявление доступных типов. Эти объявления определяют структуру типов, от которых зависит текущий файл, и позволяют компилятору гарантировать, что они используются в соответствии со спецификацией.

Этот процесс неявно обрабатывается в C #. Набор доступных объявлений - это просто набор всех объявлений во всех скомпилированных файлах, которые в противном случае доступны. Невозможно переслать объявление зависимостей так, как это делает C ++, и, следовательно, нет способа гарантировать, что они правильно используются в одном файле.

3 голосов
/ 23 июля 2010

Дополнительный инструмент Visual Studio, такой как ReSharper, является очень хорошим вложением для этой ситуации.

ReSharper выполняет непрерывный фоновый анализ кода в рамках решения и будет сообщать о проблемах, удобно отображая полосу рядом с полосой прокрутки файла кода \ документа, которая имеет красные \ оранжевые линии, обозначающие любые строки кода, которые имеют проблемы \ ошибки. Отображаемые строки позволяют щелкать мышью для перехода к рассматриваемой строке, а также содержат всплывающие подсказки с подробным описанием проблемы:

http://www.jetbrains.com/resharper/features/code_analysis.html#Continuous_Code_Quality_Analysis

           <a href="http://www.jetbrains.com/resharper/features/screenshots/50/marker_bar.png" rel="nofollow noreferrer">http://www.jetbrains.com/resharper/features/screenshots/50/marker_bar.png</a>

Проблемы \ предупреждения, которые может проверять ReSharper, являются настраиваемыми (но имеют отличную конфигурацию «из коробки») и могут обозначать что угодно из ошибок, которые могут привести к тому, что код не скомпилируется, в более тонкие проблемы, где он имеет обнаружен возможный нулевой результат вызова метода, который явно не проверен.

1 голос
/ 23 июля 2010

В командной строке: % windir% \ Microsoft.Net \ framework \ V3.5 \ csc.exe / target: библиотека File.cs

Вы могли бы разумно присоединить это к контекстному меню исследователей решений через Сервис-> Внешние инструменты

установить аргументы в / target: library $ (ItemPath)

что-то подобное может делать то, что вы хотите. Хотя файл должен зависеть от других файлов в проекте или двоичных файлах, на которые есть ссылки, кроме того, что находится в GAC.

0 голосов
/ 21 декабря 2016

Да, это возможно. Вы можете вызвать компилятор напрямую, используя командную строку. т.е.

  1. Создать отдельный файл 'hello.cs'
  2. Открыть командную строку Visual Studio
  3. Перейдите в каталог с 'hello.cs'
  4. Пробег csc hello.cs
  5. Запустите ваш единственный файл, набрав hello.exe

Это, по крайней мере, скажет вам, компилируется ли один файл или нет. Вы можете найти больше информации здесь: https://msdn.microsoft.com/en-us/library/78f4aasd.aspx

0 голосов
/ 23 июля 2010

Shift-F6 скомпилирует текущую сборку, которая почти , что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...