Включение файла .targets в .csproj для глобального определения переменных проекта и MSBuild - PullRequest
0 голосов
/ 08 ноября 2018

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

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

Как я должен делать это так, чтобы это было безопасно и удобно для разных типов проектов? (Нет, Nuget в этом случае не подходит.)

Пример файла глобальных целей:

<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Product1Version>02.01.01</Product1Version>
    <Product2Version>03.02.01</Product2Version>
    <ReferencesPath>..\..\References</ReferencesPath>
    <Product1ReferencePath>$(ReferencesPath)\Product1\$(Product1Version)</Product1ReferencePath>
    <Product2ReferencePath>$(ReferencesPath)\Product2\$(Product2Version)</Product2ReferencePath>
  </PropertyGroup>
</Project>

Вот пример того, как я собираюсь использовать это в файле csproj:

  <Import Project="..\..\Build\SolutionReferences.targets" Condition="false" />
  <ItemGroup>
    <Reference Include="Product1">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>$(Product1ReferencePath)\Product1.dll</HintPath>
      <Private>False</Private>
    </Reference>
    <Reference Include="Product2">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>$(Product2ReferencePath)\Product2.dll</HintPath>
      <Private>False</Private>
    </Reference>
  </ItemGroup>

1 Ответ

0 голосов
/ 08 ноября 2018

Тьфу ... Все, что мне нужно было сделать, это удалить Condition="false" из команды Import. (

...