1

我正在尝试从面向 .NET 框架 4.0 的类库创建 nuget 包

所以

  1. 我下载nuget.exe
  2. 打开 cmd 控制台
  3. 在根目录下创建 lib 文件夹
  4. 构建项目并将dll从复制root/bin/Releaseroot/lib/net4文件夹
  5. 利用 nuget spec CRM_Mailer.csproj

文件夹结构:

- root
   -- lib
     -- net4
        -- CRM_Mailer.dll               
        -- Cryptography.dll  
        -- DataConnector.dll  
        -- CRM_Mailer.csproj

nuget pack CRM_Mailer.nuspec
  1. 填写我的 CRM_Mailer.nuspec

     <package>
         <metadata>
             <id>CRM_Mailer</id>
             <version>0.0.2</version>
             <title>Test1</title>
             <authors>testUser</authors>
             <owners>testUser</owners>
             <!-- <licenseUrl>http://LICENSE_URL_HERE_OR_DELETE_THIS_LINE</licenseUrl> -->
             <!-- <projectUrl>http://PROJECT_URL_HERE_OR_DELETE_THIS_LINE</projectUrl> -->
             <!-- <iconUrl>http://ICON_URL_HERE_OR_DELETE_THIS_LINE</iconUrl> -->
             <requireLicenseAcceptance>false</requireLicenseAcceptance>
             <description>hope it's work</description>
             <releaseNotes>Realy hope</releaseNotes>
             <copyright>Copyright 2020</copyright>
             <tags>Win32</tags>
             <references>
                 <reference file="CRM_Mailer.dll" />  
                 <reference file="Cryptography.dll" />      
                 <reference file="DataConnector.dll" />
             </references>
         </metadata>
     </package>
    
  2. 使用nuget pack CRM_Mailer.nuspec并获得以下警告:

    警告:NU5100:程序集“bin\Release\CRM_Mailer.dll”不在“lib”文件夹中,因此在将包安装到项目中时不会将其添加为参考。如果需要引用,请将其移动到“lib”文件夹中。
    警告:NU5100:程序集“bin\Release\Cryptography.dll”不在“lib”文件夹内,因此在将包安装到项目中时不会将其添加为参考。如果需要引用,请将其移动到“lib”文件夹中。
    警告:NU5100:程序集“bin\Release\DataConnector.dll”不在“lib”文件夹中,因此在将包安装到项目中时不会将其添加为参考。如果需要引用,请将其移动到“lib”文件夹中。
    警告:NU5100:程序集“obj\Debug\CRM_Mailer.dll”不在“lib”文件夹中,因此在将包安装到项目中时不会将其作为参考添加。如果需要引用,请将其移动到“lib”文件夹中。
    警告:NU5100:程序集“obj\Release\CRM_Mailer.dll”不在“lib”文件夹中,因此在将包安装到项目中时不会将其添加为参考。如果需要引用,请将其移动到“lib”文件夹中。

  3. nuget add CRM_Mailer.0.0.3.nupkg -Source C:\GIT\NugetPackages\NugetPackageCreator\Package

  4. 包正在工作

问题是:

  • 为什么我会在第 7 步中收到警告 - 以及如何取消它们?
  • 为什么规范不从 assembly.info 复制信息?
4

2 回答 2

1

根据您的文件结构解决方案很简单。

nuget pack只需在执行命令之前删除 'obj' 和 'bin' 文件夹

于 2020-05-05T13:17:57.737 回答
0

通过 nuget 下载的程序集应位于“Lib”文件夹中(如警告所述,而不是在根文件夹中)。要修复它,请将程序集复制到子文件夹“lib”并更改规范文件以指向程序集:

<reference file="Lib\{file}">

于 2020-05-05T12:49:44.757 回答