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

Referencing Library in ASP.NET Core 1.0 (vNext)

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

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

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

  1. 如何将 "include" MyLibrary 转换为 MyWebSite?我是否手动复制 .dll 文件?如果有,是哪一个?我应该改用 nupkg 文件吗?这是一个私有程序集,我不想通过 NuGet 将其发布到全球。
  2. 我应该在 MyWebSite/project.json 中输入什么来引用 MyLibrary 程序集?

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

  1. 在解决方案资源管理器中展开您的 Web 项目
  2. 右键单击 参考资料
  3. 单击上下文菜单中的添加引用...
  4. Select 来自 Reference Manager 的项目
  5. 勾选 MyLibrary
  6. 旁边的复选框
  7. 单击确定
  8. 利润

如果您不使用 visual studio,则可以通过更新您的 Web 项目中的 project.json 文件来实现。

如果您创建了 "vNext class library project",则将其添加到 json 对象上的 dependencies 属性:

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

如果您不想与解决方案之外的其他 people/projects 共享包,则不必将包发布到 NuGet。您可以直接从源代码中引用包。

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

  1. 使用 Roslyn 进行内部化。示例:project.json and the actual code
  2. 您可以直接参考来源。示例 project.json
  3. 创建构建时间依赖项。示例 project.json and actual code for the package
  1. 几个问题用粗体标出。

(如何 "include" MyLibrary 进入 MyWebSite?) 在MyWebSite/project.json中:像这样添加引用(不用担心版本号不显示)。

(是否手动复制.dll文件?)

没有

(这是一个私有程序集,我不想通过 NuGet 将其发布到全球。)

那就不要那样做:)

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