我在同一个解决方案中有两个项目用于创建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没有影响。
答案 0 :(得分:3)
如果您无法升级构建服务器的NuGet版本,那么我只会使用相同的版本,因此在NuGet包中会生成相同的架构版本。
查看NuGet源代码所使用的架构版本取决于NuGet包使用的功能集。例如,如果您的NuGet包使用XDT转换,那么它将使用架构版本4命名空间:
slc --version
NuGet 1.7中不包含此版本4命名空间。 XDT转换包含在NuGet 2.6中。
在NuGet 2.8.7中,有两个位置可以确定架构版本。