Подтвердить что ты не робот

Как я могу использовать Microsoft.Net.Compilers на уровне решения?

Я хочу начать использовать Microsoft.Net.Compilers, чтобы упростить работу с нашим сервером сборки. Однако я смог заставить его работать только на уровне проекта, добавив пакет ко всем проектам.
Это проблематично, поскольку пакет должен быть добавлен в каждый новый созданный проект. Это может привести к тому, что код будет скомпилирован на компьютере разработчика (на котором установлен последний компилятор), но на сервере сборки произойдет сбой. У нас много проектов (более 100), так что это относительно распространено.

Есть ли способ использовать Microsoft.Net.Compilers на уровне решения?

Если нет поддерживаемого способа, есть ли инструмент командной строки, который мне не нужно устанавливать на сервере сборки? В качестве альтернативы, это не предполагаемое использование этих инструментов?

4b9b3361

Ответ 1

Если в VS 2017 (обновление 1, номера сборки> = 15.1. *) Вы можете использовать интегрированный механизм PackageReference MSBuild вместо packages.config, который ранее был доступен только для стандартных проектов .net core и .net. См. документацию PackageReference, а также сообщение в блоге NuGet, в котором объявляется о поддержке, особенно в разделе "Как насчет других типов проектов, отличных от .NET Core?".

Идея состоит в том, чтобы переключиться с установки пакета и добавления его в packages.config для восстановления, просто указав элементы MSBuild в файле csproj. Это можно настроить для новых проектов в VS: Switch from packages.config to ProjectReference (анимация взята из сообщения в блоге NuGet, указанного выше)

Новая особенность MSBuild 15 заключается в том, что он поддерживает автоматическое включение файлов в иерархию каталогов, имеющих специальные имена. Это Directory.Build.props и Directory.Build.targets, которые будут включены до (props) и после (target) содержимого файла вашего проекта (существует ошибка в версии .targets для проектов с множественным таргетингом, для которых скоро будет выпущено исправление).).

Если вы создадите файл Directory.Build.props со следующим содержимым на уровне решения, все проекты в иерархии каталогов ниже него будут наследовать его содержимое, и вы можете принудительно установить зависимость NuGet для каждого проекта:

<Project>
  <ItemGroup>
    <PackageReference Include="Microsoft.Net.Compilers" Version="2.1.0"/>
  </ItemGroup>
</Project>

Ответ 2

Для существующих проектов в решении:

Щелкните правой кнопкой мыши свое решение > Управление пакетами NuGet для решения...

... Или:

Инструменты > Диспетчер пакетов библиотеки > Управление пакетами NuGet для решения...

Затем добавьте его ко всем проектам, просмотрев ваш пакет, затем установите верхний флажок и нажмите "Установить".

Источник: fooobar.com/info/45235/...


Для новых проектов:

Создайте шаблон, имитирующий оригинал для каждого типа требуемого проекта (Консоль, Библиотека и т.д.) и добавив к нему пакет.

  • Создайте проект.

    Примечание: Используйте только действительные символы идентификатора при именовании проекта, который будет источником для шаблона. Шаблон, экспортированный из проекта с недопустимыми символами, может привести к ошибкам компиляции в будущих проектах на основе шаблона.

  • Отредактируйте проект, пока он не будет готов к экспорту в качестве шаблона.
  • При необходимости отредактируйте файлы кода, чтобы указать, где должна выполняться замена параметров.
  • В меню "Файл" выберите "Экспорт шаблона". Откроется мастер экспорта шаблонов.
  • Нажмите Шаблон проекта.
  • Если в вашем текущем решении есть несколько проектов, выберите проекты, которые вы хотите экспортировать в шаблон.
  • Нажмите "Далее".
  • Выберите значок и изображение предварительного просмотра для вашего шаблона. Они появятся в диалоговом окне "Новый проект".
  • Введите имя и описание шаблона.
  • Нажмите "Готово". Ваш проект экспортируется в ZIP файл и помещается в указанное место вывода и, если выбран, импортируется в Visual Studio.

Если у вас установлен SDK Visual Studio, вы можете поместить готовый шаблон в файл .vsix для развертывания с использованием шаблона проекта VSIX.

Источник: https://msdn.microsoft.com/en-us/library/xkh1wxd8.aspx

Если у кого-то есть более простой способ, чем создание шаблонов, я с радостью возьму его.