我们有一个框架,将其分成了许多单独的项目,放在一个解决方案中。现在我想为每个单独的项目创建 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>
问题现在是,如果我尝试安装另一个版本为1.0.1的My.Framework.EF
包,并明确依赖于My.Framework
1.0.1,Visual Studio
会重复安装My.Framework
- 分别是版本1.0.0和1.0.1。