Car*_*ema 36 nuget nuget-package
我的项目有一个.nuspec文件,它引用了包含我的包的项目需要引用的第三方DLL.
<?xml version="1.0"?>
<package >
<metadata>
<id>$id$</id>
<version>$version$</version>
<title>$title$</title>
<authors>$author$</authors>
<owners>$author$</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>$description$</description>
<releaseNotes>Locked against log4net 1.2 - less than 1.2.11 which has breaking changes</releaseNotes>
<copyright>Copyright 2012 blah blah</copyright>
<dependencies>
<dependency id="log4net" version="[1.2,1.2.11)" />
<dependency id="My.Other.Project" />
</dependencies>
<references>
<reference file="Third.Party.dll" />
</references>
Run Code Online (Sandbox Code Playgroud)
如果我尝试从.csproj和.nuspec文件的目录运行nuget.exe包My.Project.csproj,我得到
无效的程序集引用'Third.Party.dll'.确保lib目录中存在名为"Third.Party.dll"的文件.
我创建了.\ lib.\ bin\Debug\lib.\ obj\lib
并且文件位于所有三个位置.它真的想要lib文件夹在哪里?
Mat*_*ard 37
< references >元素定义在安装软件包时将添加到项目的引用.您缺少的是定义包的一部分文件的部分,该部分使用< files >元素完成.因此,您的.nuspec文件应如下所示:
<?xml version="1.0"?>
<package>
<metadata>
<id>$id$</id>
<version>$version$</version>
<title>$title$</title>
<authors>$author$</authors>
<owners>$author$</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>$description$</description>
<releaseNotes>Locked against log4net 1.2 - less than 1.2.11 which has breaking changes</releaseNotes>
<copyright>Copyright 2012 blah blah</copyright>
<dependencies>
<dependency id="log4net" version="[1.2,1.2.11)" />
<dependency id="My.Other.Project" />
</dependencies>
<references>
<reference file="Third.Party.dll" />
</references>
</metadata>
<files>
<file src="lib\Third.Party.dll" target="lib"/>
</files>
</package>
Run Code Online (Sandbox Code Playgroud)
唯一的区别是元数据元素之后的files元素.
Mus*_*idd 12
我有同样的问题,这就是我如何解决它.看起来很奇怪,但它看起来很有效,我不需要为我的第三方组装创建一个nuget包.
我的.nuspec看起来像这样:
<?xml version="1.0"?>
<package >
<metadata>
<id>$id$</id>
<version>$version$</version>
<title>$title$</title>
<authors>$author$</authors>
<owners>$author$</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>$description$</description>
<releaseNotes>Some release notes</releaseNotes>
<copyright>Copyright 2012</copyright>
<tags>some,tags</tags>
<references>
<reference file="thirdparty.dll"></reference>
<reference file="ThisAssemblyName.dll"></reference>
</references>
</metadata>
<files>
<file src="web.config.transform" target="content"/>
<file src="lib\net40\thirdparty.dll" target="lib\net40"/>
</files>
</package>
Run Code Online (Sandbox Code Playgroud)
如您所见 - 我必须添加一个文件节点来将我的第三方dll复制到目标lib \net40(在我的情况下)文件夹中.然后我不得不为thirdparty.dll以及这个NuGet包创建的程序集添加"reference"节点.我觉得Matt Ward的解决方案应该是正确的,但是在我添加(冗余)参考节点之前它对我不起作用.
我希望有所帮助!
谢谢
穆斯塔法
| 归档时间: |
|
| 查看次数: |
22486 次 |
| 最近记录: |