为.Net核心库

时间:2016-10-14 20:14:47

标签: nuget nuget-package .net-core

我有一个.Net核心库项目,我希望与所有其他项目共享。这些其他项目是在Classic 4.6.2和ASP.NET Core中开发的。我想用Nuget包分享它。由于包需要是私有的,我将在我们的服务器上托管它。我试图发布的.net核心库项目有以下project.json

{
  "version": "1.0.0-*",

  "dependencies": {
    "NETStandard.Library": "1.6.0"
  },

  "frameworks": {
    "netstandard1.6": {
      "imports": "dnxcore50"
    }
  }
}

我按照这些指南[这里] [1]创建了一个包

  1. 使用nuget spec命令
  2. 创建.nuspec包清单文件
  3. 根据建议更新了nuspec文件
  4. 尝试使用命令nuget pack MyProject.xproj创建包 得到错误
  5.   

    请指定要使用的nuspec或项目文件。

    1. 看起来nuget无法识别xproj所以执行的命令nuget pack MyProject.nuspec

      得到警告

    2.   

      警告:使用软件包' MyId'发现了2个问题。

           

      问题:lib文件夹外的程序集。描述:装配   ' BIN \调试\ netstandard1.6 \ MyProject.dll'不在' lib'文件夹和   因此,在安装软件包时,它不会被添加为参考   进入一个项目。解决方案:将其移入' lib'文件夹,如果它应该   被引用。

           

      问题:lib文件夹外的程序集。描述:装配   ' BIN \发布\ netstandard1.6 \ MyProject.dll'不在' lib'夹   因此,在安装软件包时,它不会被添加为参考   进入一个项目。解决方案:将其移入' lib'文件夹,如果它应该   被引用。

      我已经看过帖子[这里] [2]和[这里] [3],但它无法解决我的问题

1 个答案:

答案 0 :(得分:0)

如果您必须使用自己的Nuget Server,我建议您实际使用nuget实用程序将软件包推送到您的服务器。我通常会编写一个可以使用构建事件进行调度的小批处理文件,或者在我明确要部署横切关注的可移植类库的新包时执行。

批处理文件可以是简单的:

FOR %%I in (<PATH_TO_YOUR_DEBUG_FOLDER>\*.nupkg) DO nuget.exe push "%%I" -Source http://<NUGET_SERVER>/api/v2/package?replace=true

请注意,通过在末尾添加替换查询字符串并更改您的nuget配置以允许替换,您不必经历所有痛苦来回复事物。

或者您可以使用私人Feed:

  1. 创建一个您希望本地包存在的文件夹
  2. 将nuget配置文件添加到指定私有Feed位置的解决方案的根目录
  3. 然后使用类似的推送命令
  4. 如果私有供稿不可见,请重新启动Visual Studio。