我们使用 myget.org 作为 NuGet 服务器,在这里我上传了一个名为 mypackage 的包,它有两个不同的主要版本,例如 6.0.1 和 7.0.1,每个主要版本可以有多个版本,但我总是希望拥有最新版本虽然正确指定的主要版本。因此,在我的代码的一个分支中,我希望拥有 6.0.X(X = 最新),而在另一个分支中,我希望拥有 7.0.X
目前我在我的 msbuild 中执行以下操作,其中 MyPackage id 的名称中有主要版本,但这是不可扩展的。
<ItemGroup>
<Packages Include="MyPackageX">
<Source>https://xxx.myget.org/myfeed/index.json</Source>
</Packages>
</ItemGroup>
<Exec Command="$(NugetExe) install %(Packages.Identity) -Source %(Source)
-OutputDirectory $(PackagesFolder)\Package -ExcludeVersion -noninteractive
-prerelease -verbosity detail" />
我更愿意从 msbuild 脚本中执行此操作。可能吗?
简化示例
构建.msbuild 文件:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
<PropertyGroup>
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="NLog" Version="4.6.3" />
</ItemGroup>
<Target Name="Build" />
</Project>
在同一个文件夹中,我有一个 nuget.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<config>
<add key="repositorypath" value="packages" />
</config>
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
</packageSources>
</configuration>
在我的开发人员命令中,我键入:msbuild build.msbuild 但是没有安装 NuGet,因此在这个简单的场景起作用之前使用通配符没有多大意义。