首页 文章

如何指定Nuget架构?

提问于
浏览
3

我在同一个解决方案中有两个项目用于创建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没有影响 .

1 回答

  • 3

    如果您无法升级构建服务器的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:定义了目标框架的依赖关系 .

    • Schema版本5:定义了目标框架的程序集引用

    • 架构版本6:XDT转换

相关问题