![](/img/trans.png)
[英]How to inject a custom dependency in an MSBuild NuGet pack generated .nuspec
[英]How to force msbuild and nuget to pack the referenced Lib as dll?
我有2个项目:
项目 A 是 .Net Standard 2.0
项目 B 是 .Net Framework 4.6.1
在 BI 中这样引用 A (csproj):
<ItemGroup>
<ProjectReference Include="A.csproj">
<Project>{60DEB41B-8670-4199-95C2-FE68EB06B099}</Project>
<Name>A</Name>
</ProjectReference>
现在,当我打包 B 的 nuget 时,我无法访问 A,因为它无法解决依赖关系。
这是由 gitlab ci 运行的用于创建项目 B 的命令:
nuget 还原
msbuild B.csproj
nuget 包 -version $VERSION
dotnet nuget push **/*.nupkg ...
如何将A的lib作为DLL包含在B中?
实际上,在项目级别添加引用并不会在打包过程中自动添加相应的引用dll。 您需要手动将额外的dll
添加到 nuget 包中。
我有两个解决方案:
解决方案一
正如Cem.S
所说,使用-IncludeReferencedProjects
来打包你的项目。
此外,由于您打包了一个网络框架 nuget 项目,因此您只需使用 nuget.exe cli 将项目与创建的 nuspec 文件打包:
使用此命令打包您的项目 B:
nuget pack xxx\B.csproj -IncludeReferencedProjects
解决方案二
或者只是在B.nuspec
文件中添加这样的节点:
<?xml version="1.0" encoding="utf-8"?>
<package >
<metadata>
<id>xxx</id>
<version>1.0.0</version>
<title>xxx</title>
<authors>xxx</authors>
.....
</metadata>
<files>
<file src="xxx\xxx\A.dll" target="lib\net461" />
<files>
</package>
然后,运行nuget pack xxx\\B.csproj
以生成新版本。
在安装新版本之前,您应该先清理 nuget 缓存。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.