如何在 Azure Devops 中使用 msbuild 创建具有发布和调试配置的 nuget 文件
How to create a nuget file with both the Release and Debug configurations using msbuild in Azure Devops
我需要创建一个包含我的 dll 的发布和调试版本的 nuget 文件。我需要能够使用 MSBuild 任务在 Azure Devops 中执行此操作。
由于 NuGet 任务中的错误,我正在使用 MSBuild,如果您使用新的 packagereference 和 projectreference,它不会正确地提供依赖信息。
我试过做两个构建,一个在调试中,一个在发布中,然后让发布一个做一个包。这仍然只给了我一个文件。我还尝试使用 nuspec 文件来尝试告诉它获取两个文件,但这仍然只导致包中有一个文件。
How to create a nuget file with both the Release and Debug configurations using msbuild in Azure Devops
恐怕您目前无法使用 msbuild创建 具有 Release 和 Debug 配置的 nuget 文件。
那是因为 NuGet 包通常只包含特定目标框架的一组程序集。它并非真正设计用于发布调试和发布版本。
如果我们使用 nuget,我们可以使用 .nuspec
中的自定义 MSBuild .targets
文件,它有自己的引用和配置信息:
查看 了解更多详情。
但是,如果你想使用 MSBuild,我们不能直接指定 dlls 文件,我们必须为 debug
和 release
创建两个包,然后我们添加一个自定义 MSBuild .targets
项目文件中具有属性 <Pack>true</Pack>
和 <PackagePath>build\</PackagePath>
的文件,如下所示:
<ItemGroup>
<None Include="build\*.targets" Pack="True" PackagePath="build\" />
</ItemGroup>
在这种情况下,.targets
文件会被打包到build文件夹中,导入到nuget安装项目中:
查看 了解更多详情。
此外,在 .targets
文件中,您可以使用 Choose/When
到 select PackageReference
用于 debug
和 release
:
<Choose>
<When Condition=" '$(Configuration)'=='debug' ">
<ItemGroup>
<PackageReference Include="MyRefDebug">
<Version>1.0</Version>
</PackageReference>
</ItemGroup>
</When>
<Otherwise>
<ItemGroup>
<PackageReference Include="MyRefRelease">
<Version>2.0</Version>
</PackageReference>
</ItemGroup>
</Otherwise>
</Choose>
查看 github ticket 了解更多详情。
希望这对您有所帮助。
我需要创建一个包含我的 dll 的发布和调试版本的 nuget 文件。我需要能够使用 MSBuild 任务在 Azure Devops 中执行此操作。
由于 NuGet 任务中的错误,我正在使用 MSBuild,如果您使用新的 packagereference 和 projectreference,它不会正确地提供依赖信息。
我试过做两个构建,一个在调试中,一个在发布中,然后让发布一个做一个包。这仍然只给了我一个文件。我还尝试使用 nuspec 文件来尝试告诉它获取两个文件,但这仍然只导致包中有一个文件。
How to create a nuget file with both the Release and Debug configurations using msbuild in Azure Devops
恐怕您目前无法使用 msbuild创建 具有 Release 和 Debug 配置的 nuget 文件。
那是因为 NuGet 包通常只包含特定目标框架的一组程序集。它并非真正设计用于发布调试和发布版本。
如果我们使用 nuget,我们可以使用 .nuspec
中的自定义 MSBuild .targets
文件,它有自己的引用和配置信息:
查看
但是,如果你想使用 MSBuild,我们不能直接指定 dlls 文件,我们必须为 debug
和 release
创建两个包,然后我们添加一个自定义 MSBuild .targets
项目文件中具有属性 <Pack>true</Pack>
和 <PackagePath>build\</PackagePath>
的文件,如下所示:
<ItemGroup>
<None Include="build\*.targets" Pack="True" PackagePath="build\" />
</ItemGroup>
在这种情况下,.targets
文件会被打包到build文件夹中,导入到nuget安装项目中:
查看
此外,在 .targets
文件中,您可以使用 Choose/When
到 select PackageReference
用于 debug
和 release
:
<Choose>
<When Condition=" '$(Configuration)'=='debug' ">
<ItemGroup>
<PackageReference Include="MyRefDebug">
<Version>1.0</Version>
</PackageReference>
</ItemGroup>
</When>
<Otherwise>
<ItemGroup>
<PackageReference Include="MyRefRelease">
<Version>2.0</Version>
</PackageReference>
</ItemGroup>
</Otherwise>
</Choose>
查看 github ticket 了解更多详情。
希望这对您有所帮助。