如何指定Nuget架构?

时间:2015-10-19 23:10:44

标签: 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进行nuget推送(我无法对其进行升级),因此只会推送包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 个答案:

答案 0 :(得分:3)

如果您无法升级构建服务器的NuGet版本,那么我只会使用相同的版本,因此在NuGet包中会生成相同的架构版本。

查看NuGet源代码所使用的架构版本取决于NuGet包使用的功能集。例如,如果您的NuGet包使用XDT转换,那么它将使用架构版本4命名空间:

slc --version

NuGet 1.7中不包含此版本4命名空间。 XDT转换包含在NuGet 2.6中。

在NuGet 2.8.7中,有两个位置可以确定架构版本。

  • PackageBuilder
  • ManifestSchemaUtility

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