У нас есть структура, которая разбита на множество отдельных проектов в одном решении. Теперь я хочу создавать пакеты NuGet для каждого отдельного проекта, но гарантирую, что только одна версия фреймворка может использоваться в одном решении (возможно, в нескольких проектах).
Например, скажем, что структура состоит из двух проектов:
Framework
Framework_1
Framework_2
Теперь при использовании этой структуры один проект может ссылаться на Framework_1
, а другой проект ссылается на Framework_2
. Я хочу убедиться, что оба пакета имеют одну и ту же версию (бонусные баллы, если есть простой одноэтапный процесс для перехода на более новую версию)
Я думал, что просто определю один пакет Framework уровня решения, который все остальные пакеты будут строго зависеть. Проблема в том, что у NuGet нет проблем, просто устанавливая несколько версий пакета уровня решения.
В основном я пробовал следующее:
Файл nuspec уровня решения:
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>My.Framework</id>
<version>1.0.0</version>
<title>My.Framework</title>
<authors>voo</authors>
<owners>voo</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Some Framework Solution Package</description>
<copyright>Copyright © 2015</copyright>
</metadata>
</package>
И один пакет nuspec для одной части:
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>My.Framework.BL</id>
<version>1.0.0</version>
<title>My.Framework.BL</title>
<authors>voo</authors>
<owners>voo</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Business Layer</description>
<copyright>Copyright © 2015</copyright>
<dependencies>
<dependency id="My.Framework" version="[1.0.0]"/>
</dependencies>
</metadata>
</package>
Проблема в том, что если я попытался установить, скажем, еще один My.Framework.EF
пакет с версией 1.0.1
, а явная зависимость от My.Framework
1.0.1 Visual Studio
будет просто устанавливать My.Framework
дважды - один раз с версией 1.0.0 и один раз с 1.0.1.