#c# #visual-studio-2010
#c# #visual-studio-2010
Вопрос:
У меня есть это решение C # Visual Studio, которое реализует архитектуру плагинов. При создании сборки отладки я хочу, чтобы в основное приложение была скомпилирована пара плагинов. При создании сборки release я хочу, чтобы эти CS-файлы были оставлены в покое.
Есть ли способ указать разные действия сборки для файлов плагинов для сборок debug и release? Я бы хотел, чтобы для него было установлено значение «Compile» в сборке debug и значение «None» в сборке release.
Ответ №1:
Для этого вам нужно вручную изменить .csproj и добавить Condition
атрибут Compile
XML в элемент XML, соответствующий файлу, который вы хотите использовать только в отладочных сборках. Вот так:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
...
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
...
</PropertyGroup>
<ItemGroup>
<!-- Add the Condition attribute here, on each of your debug only files
Pick up one of the configuration definition configuration above -->
<Compile Include="DebugOnlyClass1.cs" Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "/>
<!-- normal compilation -->
<Compile Include="Class1.cs" />
<Compile Include="PropertiesAssemblyInfo.cs" />
</ItemGroup>
...
</Project>
Ответ №2:
Поскольку подключаемые модули обычно находятся в отдельных сборках, я бы создал отдельный проект для каждого подключаемого модуля.
Для проектов вы можете определить, следует ли выполнять сборку в конфигурации или нет: в Visual Studio откройте диспетчер конфигурации (меню Build). В верхнем левом выпадающем списке выберите конфигурацию Release или Debug и установите флажки build в списке ad libitum.
Редактировать: в противном случае вам придется редактировать .csproj
файл вручную и добавлять атрибут условия к элементу, который вы хотите исключить:
<Compile Condition="'$(Configuration)' == 'Debug'" Include="Program.cs" />
Комментарии:
1. @Simon: Нет. Даже не вдохновлен. Хотя я должен признать, что формулировка очень похожа.
2. @SimonMourier да, но через 30 секунд после вашего ответа — я считаю, что это было совпадением.