难道没有更自动化的打包方式吗?
其实,nuget包并没有机制让项目根据主项目的配置来引用调试输出文件或发布输出文件。
而且当你打包一个工程的时候,它没有一个功能是同时包含Debug或者Release输出文件然后让主工程-- -----使用Debug时,引用nuget的Debug内容,使用Release时,引用nuget的Release内容。
到目前为止,nuget还没有那么灵活,做不到你上面提到的功能。
======================
作为建议,您应该创建项目的两个 nuget 包(Debug 或 Release),然后手动安装相应的包必填。
您可以创建一个网络标准库项目,并将这些添加到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>
并且您可以将配置切换到Debug或Release来构建您的项目以在输出文件夹下生成nupkg文件。
注意:
1) 要生成调试nuget 包,您应该将pdb file 和source files 包含到nuget 包中,然后您可以在主项目中对其进行调试。有a similar issue,里面有详细的步骤。
2) 可以在新建的sdk格式项目中直接定义package_id。你应该添加Debug或Release来区分它们。
更多关于打包新sdk格式项目的信息,可以参考this document。
===============================
另外,如果您仍然想要初始功能(在同一个包中包含调试或发布),您可以在我们的User Voice Forum 上suggest a feature,我希望团队会考虑您的想法仔细并给予满意的答复。