xml - 如何指定 Nuget 架构?

标签 xml visual-studio nuget

我在用于创建 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
  • ManifestSchemaUtility

    • 模式版本 4:定义了目标框架的依赖内容和工具
    • 架构版本 4:定义了目标框架的依赖关系。
    • 架构版本 5:已定义目标框架的程序集引用
    • 模式版本 6:XDT 转换

关于xml - 如何指定 Nuget 架构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33225461/

相关文章:

nuget - Umbraco 通过 Nuget - 如何更改数据库?

Java DOM xml 不能得到 child

html - 使用相对 URL 的 Over the Air iOS Adhoc Build

c++ - (特殊情况,可能与VC目录设置有关) fatal error C1083 : Cannot open include file: 'iostream.h' : No such file or directory

wpf - 在 WPF 设计器中,启用/禁用项目代码有什么作用?

c# - 模拟基于 Atom 的 pc 环境

java - 当我通过jdom解析一个xml文档时,我发现一些 '\r'字符丢失了

android - 如何在保持宽高比的 XML 中更改 Android ImageView 的宽度?

c# - 代理背后的 NuGet

package - 仅 nuget 包内容文件