如何使用NuGet Package Explorer创建一个包含发布版和调试版DLL的NuGet包?

11 浏览
0 Comments

如何使用NuGet Package Explorer创建一个包含发布版和调试版DLL的NuGet包?

我正在使用Nuget Package Explorer创建一些Nuget包。我已经成功地在VS中以Release模式构建项目,并将dll和pdb文件都添加到了包中。\n到目前为止一切都很好,但是当我将包添加到另一个项目中并在调试时尝试进入代码时,它会跳过它。\n我理解如果想要在调试时进入代码,我需要构建并添加Debug版的dll和pdb到我的包中。但我不确定如何将这些添加到我已经创建的包中,该包已经包含了相同名称的Release版dll和pdb文件。\n有什么想法吗?

0
0 Comments

问题的原因是在使用nuget包的新格式和sdk样式csproj格式时,输出的包文件不会被输出到包文件夹中,这增加了维护的困难。解决方法是在构建文件夹中添加目标文件,并使用$(MSBuildThisFileDirectory)获取文件路径。对于多个目标框架(如netstandard2.0net5.0),可以将目标文件放置在build/{framework}/下,并将HintPath更改为$(MSBuildThisFileDirectory)..\..\lib\{framework}\Debug\YourLib.dll,然后为每个目标框架复制一份并更改{framework}

0
0 Comments

如何使用NuGet Package Explorer创建包含发布和调试DLL的NuGet包?

问题的原因是:NuGet默认只能在lib文件夹中添加一种类型的DLL引用。如果需要同时添加发布和调试版本的DLL引用,需要通过一些额外的步骤来实现。

解决方法如下:

1. 创建一个文件结构如下的NuGet包:

lib\net\$(Configuration)\YourLib.1.0.0.dll    <---- 这里放一个名为YourLib.1.0.0.dll的虚拟文件
tools\release\YourLib.1.0.0.dll  <--- 这里放发布版本的DLL
tools\debug\YourLib.1.0.0.dll  <--- 这里放调试版本的DLL
build\YourLib.targets  

2. 创建一个名为YourLib.targets的文件,内容如下:

3. 在工程文件中自动添加lib文件夹中的DLL引用,工程文件内容如下:


									
0
0 Comments

问题的原因是想要在一个NuGet包中同时包含发布版和调试版的DLL文件。解决方法是创建一个.targets文件,根据项目的构建配置来添加条件引用。

首先,需要在NuGet包中创建一个build文件夹,并在其中创建一个YourLib.targets文件。该文件的内容如下:



  
    
      ..\packages\YourLib.1.0.0\lib\Debug\YourLib.dll
    
  
  
    
      ..\packages\YourLib.1.0.0\lib\Release\YourLib.dll
    
  

在这个.targets文件中,我们根据当前的构建配置来选择引用的DLL路径。通过创建debug和release文件夹,并在其中分别放置相应的DLL文件,可以根据构建配置来选择引用的DLL。

在项目或props文件中如何引用这个设置中的"YourLib"呢?如果我将YourLib放在我的props文件中的中,我会得到一个"cannot open input file 'YourLib.obj'"的错误。

以上是这个问题的解决方案。

0