часто ли редактируется файл csproj в сценариях сборки?

#c# #visual-studio-2010

#c# #visual-studio-2010

Вопрос:

Я хочу, чтобы мой скрипт сборки автоматически добавлял (или удалял) файлы из моего проекта c # при сборке. Я вижу записи в файле csproj, которые сообщают vs2010, что файл находится в проекте, относительно просты.

Я думаю, что могу просто отредактировать файл csproj с помощью сценария сборки, чтобы добавить файлы, которые должны быть там, и удалить файлы, которые не должны основываться на некоторой логике, выполняемой сценарием сборки.

Кто-нибудь попытается отговорить меня от этого?

Спасибо

Айзек

Комментарии:

1. Если вы знаете, что вас нужно отговорить от этого, вы знаете, что это плохая идея. Вы спрашиваете, почему это плохая идея?

2. Должны ли мы предполагать, что у вас есть веская причина для этого?

Ответ №1:

Это не обычное дело, нет.

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

Если вы хотите включить / исключить файл в зависимости от того, где он собран, то лучше всего создать дополнительную конфигурацию сборки, задать в ней специальный условный символ компиляции и использовать #if в исходном файле.

В качестве альтернативы вы могли бы просто добавить Condition атрибут к файлу в .csproj, поскольку это всего лишь файл MSBuild. Что-то вроде этого:

 <ItemGroup>
  <Compile Include="Something.cs" Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "/>
  

(примечание — Я не тестировал вышеописанное, но я думаю, что это должно сработать)