在ASP.NET Core 1.0中引用库(vNext)

时间:2015-06-22 16:43:39

标签: c# .net .net-assembly asp.net-core coreclr

我正在学习ASP.NET Core 1.0(vNext)。考虑到这一点,我有一个结构如下的解决方案:

MySolution
  src
    MyLibrary
      MyClass.cs
      project.json
    MyWebSite
      Startup.cs
      project.json

我使用MyLibrary从命令行成功编译dnu build。我运行了生成dnu pack的{​​{1}}。还有两个文件夹:MyLibrary.1.0.0.nupkgdnx451,它们都包含dnxcore50。我想在MyLibrary.1.0.0.dll中使用MyLibrary,但是,我很困惑。

  1. 我如何"包括" MyWebSite进入MyLibrary?我是否手动复制MyWebSite文件?如果是这样,哪一个?我应该使用.dll文件吗?这是一个私有程序集,我不想通过NuGet全局发布它。
  2. 我应该在nupkg中引用MyWebSite/project.json汇编?

3 个答案:

答案 0 :(得分:6)

您使用的是Visual Studio 2015 RC吗?如果是,请按照以下步骤操作:

  1. 在解决方案资源管理器中展开您的Web项目
  2. 右键点击参考
  3. 点击上下文菜单
  4. 中的添加引用...
  5. 参考管理器
  6. 中选择项目
  7. 勾选 MyLibrary
  8. 旁边的复选框
  9. 点击确定
  10. 利润
  11. 如果您不使用visual studio,则可以通过更新Web项目中的project.json文件来实现。

    如果你创建了一个" vNext类库项目"然后将其添加到json对象的依赖项属性:

    "dependencies": {
          "MyLibrary": "1.0.0-*"
       }
    

答案 1 :(得分:4)

如果您不希望与解决方案之外的其他人/项目共享该程序包,则不必将该程序包发布到NuGet。您可以直接从源代码引用包。

但是,如果这仍然不适合您,那么您有三个选择:

  1. 使用Roslyn进行内部化。示例:project.jsonactual code
  2. 您可以直接参考来源。示例project.json
  3. 创建构建时依赖项。示例project.jsonactual code for the package

答案 2 :(得分:3)

  1. 以粗体标出的几个问题。
  2. 如何“将MyLibrary”包含在MyWebSite中?) 在MyWebSite / project.json中:添加这样的引用(不要担心版本号不显示)。 Add VS2015RC class library reference

    (我手动复制.dll文件吗?)

    没有

    (这是一个私人程序集,我不想通过NuGet全局发布它。)

    然后不要那样做:)

    从Web应用程序引用您的类库将确保在构建Web应用程序时包含它。然后,您应该将Web应用程序文件复制到能够运行它的应用程序服务器。我认为您应该尝试将您的Web应用程序发布到Azure Web应用程序,然后使用服务器资源管理器查看发布后服务器上的文件。或者您是否已经知道在您的网络应用程序中使用它之前没有理由制作包?