我们有一个框架,该框架在一个解决方案中分为许多单独的项目。我现在想为每个单独的项目创建NuGet包,但要保证在一个解决方案中只能使用一个版本的框架(可能跨多个项目)。
例如,假设框架由两个项目组成:
Framework
Framework_1
Framework_2
现在,当使用这个框架时,一个项目可能会引用Framework_1
,而另一个项目会引用Framework_2
。我想确保两个软件包具有相同的版本(如果有一个简单的单步过程可以升级到新版本,则可以加分)
我想我只会定义一个解决方案级别的框架包,所有其他包都严格依赖它。问题是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 版。