繁体   English   中英

Nuget 封装,带调试和发布

[英]Nuget packages with both debug and release

在我们的工作中,我们有一个开发库的团队和其他使用这些库开发项目的团队。

图书馆团队比项目团队拥有更多的经验。

我们在这里创建了这个环境:

所有库都在 nuget 包中,在 nuget 服务器中,在 azure devops 中。 我们在 Azure devops 中有源链接。

但是当我们部署这些库时,我们必须在调试或发布之间做出选择,而且我们各有利弊。

我理想的 nuget package 将同时具有调试和发布功能,并且 select 与运行它的项目相同。

这样我就可以为项目团队进行更好的调试,并在发布时获得最大的性能。

我与https://twitter.com/rrelyea进行了交谈,他提出了一些想法,但对于其他团队来说实施起来似乎很复杂,或者管理起来很复杂。

像 2 台 nuget 服务器,一台用于调试,一台用于发布,并在机器和构建服务器上配置这些不同的服务器。

或者 2 个 nuget 包,在 package 的名称上带有 .debug 和 .release,并配置项目以在每种模式下加载不同的。

真正的问题是我需要保证所有包在两台服务器上都具有相同的 id 和版本。

没有更自动化的打包方式吗?

很简单,如果是调试就使用调试,如果是发布就使用发布。

顺便问一下,在这种情况下,调试和发布之间的性能差异有多大?

没有更自动化的打包方式吗?

Actually , nuget package does not have a mechanism to let a project to reference the debug output files or release output files based on the configuration of the main project.

而且打包项目的时候,没有function要同时包含Debug或者Release output文件然后让主项目-------使用Debug的时候,参考Z055824408469C382BFE79的Debug内容。使用Release时,参考 nuget 的Release内容。

到目前为止,nuget 还没有那么灵活,它不能做你上面提到的功能。

======================

作为建议,您应该创建项目的两个 nuget 包( DebugRelease ),然后根据需要手动安装相应的 package。

您可以创建一个网络标准库项目,并将这些添加到xxx.csproj文件中:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <RootNamespace>PackageName</RootNamespace>
    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
  </PropertyGroup>

  
  <PropertyGroup Condition="'$(Configuration)'=='Debug'">
    <PackageId>PackageName_Debug</PackageId>      //name the nuget package which contains Debug key name
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)'=='Release'">
    <PackageId>PackageName_Release</PackageId>    //name the nuget package which contains Debug key name
  </PropertyGroup> 

  
  <PropertyGroup>
    <Version>1.0.0</Version>
    <Authors>your_name</Authors>
    <Company>your_company</Company>
  </PropertyGroup>


  <ItemGroup Condition="'$(Configuration)'=='Debug'">
    <None Include="$(ProjectDir)$(OutputPath)$(AssemblyName).pdb" Pack="true" PackagePath="lib\$(TargetFramework)"></None>
    <Compile Update="Class1.cs" Pack="true" PackagePath="Resource">
    </Compile>

    ...// add any source files

  </ItemGroup>
  
</Project>

您可以将配置切换到调试发布来构建您的项目以在output文件夹下生成 nupkg 文件。

注意

1) To generate a debug nuget package, you should contains the pdb file and source files into the nuget package and then you can debug it in the main project. 一个类似的问题,其中包含有关它的详细步骤。

2)可以在新建的sdk格式项目中直接定义package_id 您应该添加DebugRelease来区分它们。

有关打包新 sdk 格式项目的更多信息,您可以参考此文档

===============================

另外,如果您仍然想要最初的功能(在同一个包中包含 Debug 或 Release),您可以在我们的User Voice 论坛suggest a feature ,我希望团队会仔细考虑您的想法并给出满意的答复。

也许......只需使用 Nuget Explorer 将调试文件夹中的.pdb 文件添加到 Lib

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM