2016-03-04 109 views
0

项目间的依赖我无法弄清楚如何与一个解决方案项目和第三方组件的NuGet:在溶液

我有2个项目,AB溶液中引用创建一个包。 B参考文献A。此外,B引用C这是一个dll位于Solution/libs

AB都应该是的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结合信息。然而...

它给了我A.dllB.dll\lib\net45和nupkg在\libC.dll。也有一个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> 

当我安装包到项目,没有ABC参考。

我的设置有什么问题?有没有办法创建一个包含从csproj和手动指定的引用(或者有一些隐藏的约定)的依赖包的方法?

+0

嘿,你找到一个解决方案?我在这里面对的东西很相似 - http://stackoverflow.com/questions/36796591/nuget-package-referenced-assemblies-are-not-being-included-as-project-referenc – pharophy

+0

@pharophy是的,我刚刚添加C.dll到nuspec中的lib \ net40。重点是你需要将文件放在lib中的一个子文件夹中...... net45或net40 –

回答

1

有一个名为NuProj的开源Visual Studio加载项,可以更好地处理这些场景。它由微软员工Immo Landwerth开创。它定义了一个可以添加到解决方案的自定义NuProj项目类型,并且很好地处理引用。

你可以找到更多关于project website的信息。