Nuget:解决方案中项目之间的依赖关系
Nuget: dependencies between projects in a solution
我不知道如何创建引用解决方案项目和第三方程序集的包
我有一个包含 2 个项目的解决方案,A
和 B
。 B
引用 A
。此外,B
引用 C
这是一个位于 Solution/libs
中的 dll
A
和 B
应该是 nuget 包。
我有一个 B.nuspec
文件如下:
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/10/nuspec.xsd">
<metadata>
<id>B</id>
<version>$version$</version>
<title>B</title>
<authors>me</authors>
<owners>me</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Description</description>
<copyright>Copyright © me 2016</copyright>
<references>
<reference file="C.dll" />
</references>
</metadata>
<files>
<file src="..\libs\RMS\C.dll" target="lib"/>
</files>
</package>
我运行以下命令:
nuget pack B.csproj -IncludeReferencedProject
正如 nuget 文档中所说,nuget 将结合来自 csproj 和 nuspec 的信息。然而...
它给了我一个 nupkg,A.dll
和 B.dll
在 \lib\net45
中,C.dll
在 \lib
中。还有一个 nuspec 文件
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/10/nuspec.xsd">
<metadata>
<id>B</id>
<version>1.0.31</version>
<title>B</title>
<authors>me</authors>
<owners>me</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Description</description>
<copyright>Copyright © me 2016</copyright>
<dependencies>
<dependency id="log4net" version="2.0.2" />
<dependency id="JetBrains.Annotations" version="9.2.0" />
<dependency id="morelinq" version="1.4.0" />
</dependencies>
<references>
<reference file="C.dll" />
</references>
</metadata>
</package>
并且当我将包安装到项目中时,A
、B
、C
的 none 被引用。
我的设置有什么问题?有没有办法创建一个包,其中包含从 csproj 获取的依赖项和手动指定的引用(或者可能有一些隐藏的约定?)
有一个名为 NuProj 的开源 Visual Studio 插件可以更好地处理这些场景。它由 Microsoft 员工 Immo Landwerth 发起。它定义了一个自定义的 NuProj 项目类型,您可以将其添加到您的解决方案中,并且可以很好地处理引用。
您可以在 project website 上找到更多信息。
我不知道如何创建引用解决方案项目和第三方程序集的包
我有一个包含 2 个项目的解决方案,A
和 B
。 B
引用 A
。此外,B
引用 C
这是一个位于 Solution/libs
A
和 B
应该是 nuget 包。
我有一个 B.nuspec
文件如下:
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/10/nuspec.xsd">
<metadata>
<id>B</id>
<version>$version$</version>
<title>B</title>
<authors>me</authors>
<owners>me</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Description</description>
<copyright>Copyright © me 2016</copyright>
<references>
<reference file="C.dll" />
</references>
</metadata>
<files>
<file src="..\libs\RMS\C.dll" target="lib"/>
</files>
</package>
我运行以下命令:
nuget pack B.csproj -IncludeReferencedProject
正如 nuget 文档中所说,nuget 将结合来自 csproj 和 nuspec 的信息。然而...
它给了我一个 nupkg,A.dll
和 B.dll
在 \lib\net45
中,C.dll
在 \lib
中。还有一个 nuspec 文件
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/10/nuspec.xsd">
<metadata>
<id>B</id>
<version>1.0.31</version>
<title>B</title>
<authors>me</authors>
<owners>me</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Description</description>
<copyright>Copyright © me 2016</copyright>
<dependencies>
<dependency id="log4net" version="2.0.2" />
<dependency id="JetBrains.Annotations" version="9.2.0" />
<dependency id="morelinq" version="1.4.0" />
</dependencies>
<references>
<reference file="C.dll" />
</references>
</metadata>
</package>
并且当我将包安装到项目中时,A
、B
、C
的 none 被引用。
我的设置有什么问题?有没有办法创建一个包,其中包含从 csproj 获取的依赖项和手动指定的引用(或者可能有一些隐藏的约定?)
有一个名为 NuProj 的开源 Visual Studio 插件可以更好地处理这些场景。它由 Microsoft 员工 Immo Landwerth 发起。它定义了一个自定义的 NuProj 项目类型,您可以将其添加到您的解决方案中,并且可以很好地处理引用。
您可以在 project website 上找到更多信息。