Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Msbuild 在打包时设置打包ID?_Msbuild_Azure Devops_Nuget Package - Fatal编程技术网

Msbuild 在打包时设置打包ID?

Msbuild 在打包时设置打包ID?,msbuild,azure-devops,nuget-package,Msbuild,Azure Devops,Nuget Package,我试图弄清楚如何在构建时指定packageId,或者在包时指定packageId。我的csproj中有以下内容,可以很好地在本地创建用于测试的包。我们正在使用Azure DevOps构建管道来构建和打包我们的nuget包,我希望能够在构建管道中将packageId设置为任务或msbuild参数 有人对我如何做到这一点有什么建议吗 谢谢 <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup>

我试图弄清楚如何在构建时指定packageId,或者在包时指定packageId。我的csproj中有以下内容,可以很好地在本地创建用于测试的包。我们正在使用Azure DevOps构建管道来构建和打包我们的nuget包,我希望能够在构建管道中将packageId设置为任务或msbuild参数

有人对我如何做到这一点有什么建议吗

谢谢

    <Project Sdk="Microsoft.NET.Sdk">
        <PropertyGroup>
        <TargetFramework>net461</TargetFramework>
        <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
        <TargetsForTfmSpecificBuildOutput>$(TargetsForTfmSpecificBuildOutput);Dependencies</TargetsForTfmSpecificBuildOutput>
        <Version>0.1.0.5</Version>
        <PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
        <AssemblyName>MyAssembly</AssemblyName>
        <RootNamespace>MyAssembly</RootNamespace>
        <AssemblyVersion>1.0.0.0</AssemblyVersion>
        <PackageId>MyAssembly.Test</PackageId>          <----- set at package time
        <FileVersion>1.0.0.0</FileVersion>
        <PackageLicenseUrl>https://my.domain.xyz/license.pdf</PackageLicenseUrl>
        <AppxAutoIncrementPackageRevision>True</AppxAutoIncrementPackageRevision>
        <Description>A useful description.</Description>
        <Company>XYZ</Company>
        <Authors>UiPath</Authors>
        <PackageIconUrl>http://my.domain.xyz/favicon.ico</PackageIconUrl>

net461
真的
$(TargetsForTfmSpecificBuildOutput);依赖关系
0.1.0.5
真的
MyAssembly
MyAssembly
1.0.0.0

MyAssembly.Test您可以在克隆后和生成前使用文件转换任务修改csproj的XML:


您可以在克隆后和生成前使用文件转换任务修改csproj的XML:

你试过打电话吗

dotnet pack -c Release -p:PackageId=The.Other.Packge.id
或.NET Core CLI任务中的等效任务

是否尝试调用?:

dotnet pack -c Release -p:PackageId=The.Other.Packge.id
或.NET Core CLI任务中的等效项

在打包时设置打包ID

答案是肯定的

根据文档,我们可以知道在构建时支持设置
PackageId

注意:

我看到您将属性
GeneratePackageOnBuild
设置为
true
,因此visual studio将自动生成nuget包

因此,如果您没有使用额外的
dotnet-pack
任务来打包您的包,您可以在dotnet-build任务中添加msbuild参数
-p:PackageId=
,如:

dotnet build -c Release -p:PackageId=<PackageId>
dotnet构建-c发行版-p:PackageId=
如果您有另一个
dotnetpack
任务来打包您的包,@Martin的答案是正确的

注2:

当我们使用选项
-p:PackageId
来更改包ID时,但不会更改AssemblyName。因此,生成的包的
包ID
与其
AssemblyName
不一致。当我们使用这个nuget包时,我们需要更加注意。或者我们也可以通过选项
-p:AssemblyName=
更改
AssemblyName
,使其与包id匹配

希望这有帮助

在打包时设置打包ID

答案是肯定的

根据文档,我们可以知道在构建时支持设置
PackageId

注意:

我看到您将属性
GeneratePackageOnBuild
设置为
true
,因此visual studio将自动生成nuget包

因此,如果您没有使用额外的
dotnet-pack
任务来打包您的包,您可以在dotnet-build任务中添加msbuild参数
-p:PackageId=
,如:

dotnet build -c Release -p:PackageId=<PackageId>
dotnet构建-c发行版-p:PackageId=
如果您有另一个
dotnetpack
任务来打包您的包,@Martin的答案是正确的

注2:

当我们使用选项
-p:PackageId
来更改包ID时,但不会更改AssemblyName。因此,生成的包的
包ID
与其
AssemblyName
不一致。当我们使用这个nuget包时,我们需要更加注意。或者我们也可以通过选项
-p:AssemblyName=
更改
AssemblyName
,使其与包id匹配


希望这有帮助。

谢谢James,我不知道文件转换util,这将在将来派上用场。谢谢James,我不知道文件转换util,这将在将来派上用场。