我在用于创建 nuget 包的同一解决方案中有两个项目。当我获取这些包中的每一个并将其解压缩以找到生成的 nuspec 时,我发现它们各自针对不同的 xml 模式。
套餐A:
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
套餐B:
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
这是一个问题,因为我的构建服务器想要使用 nuget 版本 1.7 推送它们(我无法升级它)所以只会推送包 A。
我如何强制包 B 以与 A 相同的架构为目标?
附加信息: 包 A 以 .Net 4.0 为目标 包 B 目标 .Net 3.5 我在本地打包 nuget 2.8,可以确认同一命令生成了不同的架构版本:
nuget pack xxx.csproj -IncludeReferencedProjects -OutputDirectory c:\nuget\MyPackageLibrary -verbosity detailed
(我有一个对应的 xxx.nuspec 文件用于元数据)
我试过在任一 .nuspec 文件中不指定架构
<?xml version="1.0"?>
<package>
<metadata>
我试过指定:
<?xml version="1.0"?> <package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd"> <metadata>
但它对我解压缩打包后的工件时找到的.nuspec 没有影响。
最佳答案
如果您无法升级构建服务器的 NuGet 版本,那么我将只使用相同的版本,以便在 NuGet 包中生成相同的架构版本。
查看 NuGet 源代码,使用的架构版本取决于 NuGet 包使用的功能集。例如,如果您的 NuGet 包使用 XDT 转换,那么它将使用架构版本 4 命名空间:
http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd
NuGet 1.7 中不包含此版本 4 命名空间。 XDT 转换包含在 NuGet 2.6 中。
在 NuGet 2.8.7 中,有两个位置可以确定架构版本。
- PackageBuilder
-
- 模式版本 4:定义了目标框架的依赖内容和工具
- 架构版本 4:定义了目标框架的依赖关系。
- 架构版本 5:已定义目标框架的程序集引用
- 模式版本 6:XDT 转换
关于xml - 如何指定 Nuget 架构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33225461/