Перемещение элементов компиляции в msbuild в отдельный файл? - PullRequest
7 голосов
/ 21 сентября 2011

Вероятно, это часто задаваемые вопросы, но мы не смогли найти решение даже после долгих поисков.

У нас есть несколько файлов msbuild, которые все работают с одним и тем же набором исходных файлов.(Это не особенно актуально, но они компилируются на совершенно разных платформах.) Чтобы упростить управление ими, мы бы хотели переместить имена исходных файлов <Compile> в отдельный файл и ссылаться на них из всех файлов msbuild.

Мы попытались вырезать <ItemGroup>, содержащий элементы <Compile>, и вставить его в новый файл, окружив его

<Project DefaultTargets="Build" ToolsVersion="3.5" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

, а затем сослаться на негоэтот файл из оригинала с

<Import Project="Common.files.csproj" />

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

Что мы делаем не так?

Ответы [ 2 ]

10 голосов
/ 21 сентября 2011

Пробовал с Visual Studio 2010:

1) Создайте свой внешний файл .proj (или .target) и добавьте свои файлы (я использовал другое имя элемента, но это не должно иметь значения)

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <ItemGroup>
        <ExternalCompile Include="Program.cs" />
        <ExternalCompile Include="Properties\AssemblyInfo.cs" />
    </ItemGroup>
</Project>

2) Импортируйте ваш внешний файл .proj вверху файла проекта Visual Studio :

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <Import Project="MyExternalSources.proj" />
   <PropertyGroup>
   ...

и измените группу элементов Compile следующим образом:

...
<ItemGroup>
    <Compile Include="@(ExternalCompile)" />
</ItemGroup>
...

Предупреждение: Вам нужно будет добавить новые элементы / файлы в ваш внешний файл .proj - все элементы / файлы, добавленные из Visual Studio, будут выглядеть следующим образом:

...
<ItemGroup>
    <Compile Include="@(ExternalCompile)" />
    <Compile Include="MyNewClass.cs" />
</ItemGroup>
...
0 голосов
/ 21 сентября 2011

Я никогда не видел, чтобы «включаемые» файлы работали с MSBuild.Очевидно, что файлы Targets работают таким образом, но я не видел частичного файла msbuild, включенного в другой.Не могли бы вы использовать такой метод, как показано в этом?http://msdn.microsoft.com/en-us/library/ms171454(VS.80).aspx

Использование подстановочных знаков - это то, как я обращался к этому в прошлом.

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