2011-12-19 4 views
2

У меня есть проект, который содержит много ссылок, и все они являются условными, шоу, которое я вручную редактировать PROJ файлы, как показано ниже,Visual Studio Условный Редактор конфигурации проекта

<ItemGroup Condition=" '$(Configuration)' == 'Release' "> 
    <Reference Include="Assembly1"> 
     <HintPath>..\Release\Path\Assembly1</HintPath> 
    </Reference> 
    <Reference Include="Assembly2"> 
     <HintPath>..\Release\Path\Assembly2</HintPath> 
    </Reference> 
    </ItemGroup> 
    <ItemGroup Condition=" '$(Configuration)' == 'Debug' "> 
    <Reference Include="Assembly1"> 
     <HintPath>..\Debug\Path\Assembly1</HintPath> 
    </Reference> 
    <Reference Include="Assembly2"> 
     <HintPath>..\Debug\Path\Assembly2</HintPath> 
    </Reference> 
    </ItemGroup> 

Заметим, что это всего лишь пример, с только две конфигурации, выпуск и отладка, в настоящее время у нас есть 4 конфигурации на платформу, и мы имеем дело с хранением около 12 конфигураций, 3 для .NET 3.5, .NET 4 и .NET 4.5

Интересно, есть ли какие-либо другие лучше, чем это?

  1. Есть ли какой-либо плагин визуальной студии, который позволяет нам выполнять эти конфигурации в каком-то пользовательском интерфейсе, а не редактируя xml, потому что он становится сложным с каждым днем.
  2. Есть ли какие-либо скрипты в MSBuild или что-нибудь, что, вероятно, может читать некоторые пользовательские xml или некоторые хранилища данных, и мы можем автоматизировать этот процесс?
  3. Если я создаю другой файл VSProj для различной конфигурации, то очень важно, чтобы файлы содержимого были добавлены правильно, но единственными проблемами являются ссылки.
  4. Есть ли другой инструмент, который может легко управлять ссылками на конфигурацию?

Моей главной задачей является хранение и управление ссылками в соответствии с типами конфигурации.

+0

Может быть, пришло время использовать [NAnt] (http://nant.sourceforge.net) ... – CedX

+0

ли NAnt интегрируется с визуальной студией и имеет ли она более простую форму пользовательского интерфейса? –

+0

Я не знаю, существует ли плагин для Visual Studio. Для NAnt есть некоторый GUI (см. Http://nant.sourceforge.net/external.html), в основном NAntBuilder.Но я сомневаюсь, что есть один, который подходит вам. – CedX

ответ

4

Я хотел бы сделать это:

В файле с именем «Common.props»

<Project ...> 
    <ItemGroup> 
    <Reference Include="Assembly1"> 
     <HintPath>..\$(Configuration)\Path\Assembly1</HintPath> 
    </Reference> 
    <Reference Include="Assembly2"> 
     <HintPath>..\$(Configuration)\Path\Assembly2</HintPath> 
    </Reference> 
    </ItemGroup> 
</Project> 

Вы можете поместить это в отдельный файл Common.props, как показано и используйте элемент Import в " включают в себя»его во всех ваших файлов проекта, поэтому существует единая точка обслуживания, как это:

<Project ...> 
    <PropertyGroup> 
    <Configuration Condition="'$(Configuration)' == ''>Debug</Configuration> 
    ...other properties 
    </PropertyGroup> 
    <Import Project="Common.props" /> 
    ...rest of your C# project file 
</Project> 

что значителен о размещении импорта, показанного выше, что это происходит после того, опр значение по умолчанию для $ (Конфигурация), в случае, если ни один не указан, что делает правильное значение доступным для импорта. Вы можете, конечно, переместить это объявление значения по умолчанию, а также намного больше, в файл Common.props. Если вы выполняете это последовательно, ваши файлы проектов обычно становятся немного больше, чем 4 свойства (Project Guid, Namespace, Assembly Name, Project Type), импорт, список файлов для компиляции и любые необычные ссылки на сборки или ссылки на проекты. Мои проекты, как правило, никогда не имеют никаких условных свойств, поскольку они почти всегда могут быть учтены при совместном импорте.

Для этого нет хорошего пользовательского интерфейса, пользовательский интерфейс VS IDE очень ограничен, и я никогда не использовал его для изменения каких-либо свойств проекта, но вместо этого полагался на пользовательские инструменты, обычно настраиваемые задачи MSBuild для проверки файлов проекта чтобы убедиться, что они совместимы, и скрипты PowerShell, чтобы изменить их для общих изменений.

Выдержки из книги MSBuild Trickery трюки # 14 - 18

EDIT: добавлен импорт объяснение

+0

Можете ли вы опубликовать, как написать элемент импорта? –

+0

Большое спасибо Брайан, я попробую это, даже мне не нравится писать условные элементы, но проблема в том, что VS не выбирает правильную версию Debug и Release, ссылаясь на другой проект в качестве ссылки на проект. Затем в конечном продукте мы получаем сочетание отладочной и выпускной версий вместо ожидаемой правильной конфигурации. Есть ли способ ссылаться на проект и его выход, а также на переменную конфигурации? в отличие от ссылки на dll? Это еще одна головная боль. –

+0

Помните, что Visual Studio (я использую 2013 год сегодня), похоже, кэширует ссылки и удерживает их при изменении конфигураций, поэтому вы можете в конечном итоге ошибиться, если ссылки имеют разные имена и обычно генерируют эту ошибку, если они были включены вместе в одну и ту же конфигурацию. Просто перезапустите Visual Studio. –

Смежные вопросы