Мне нужно одно место, чтобы определить переменные для решения, которое имеет около 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>