【问题标题】:VS2015 add reference for Class LibraryVS2015添加类库参考
【发布时间】:2015-08-04 09:50:58
【问题描述】:

我在VS2015中创建了一个项目,结构如下:

解决方案1

  • BookStore.ClassLibrary1 => 类库(包)
  • BookStore.ClassLibrary2 => 类库
  • BookStore.Web => MVC5

在 BookStore.Web 中,我可以引用 BookStore.ClassLibrary2,但无法引用 BookStore.ClassLibrary1

它显示错误“无法添加对'ClassLibrary1'的引用。

我的问题是如何在 VS2015 中引用一个类库(包)?非常感谢!

【问题讨论】:

  • 添加引用时的错误描述是什么?
  • 我猜它不是拼写错误,我在弹出窗口中勾选了复选框,还添加了错误截图。谢谢!
  • 有时我会遇到类似的错误,有时它们来自VS Extension,想在添加引用时进行一些操作而失败,导致一切失败。您可以试试这个:手动编辑您的 Web 项目的项目文件,然后查看参考是否有效。您可以在外部或 VS 内部编辑 csproj:卸载项目、编辑、重新加载项目(全部在解决方案资源管理器的上下文菜单中)
  • 感谢citykid,我尝试手动添加ClassLibrary1,重新加载项目后,“!”出现在 ClassLibrary1 旁边...
  • 好的,这有帮助,那么库显然确实有些东西。找到 3 个实际使用的 dll 中的每一个,并使用 ildasm 或 dotpeek 打开它们并检查它们依赖于哪个 clr。您还可以在 VS 中检查您的构建设置,以确保它们都具有相同的目标 .Net 运行时并且都设置为 AnyCPU。

标签: asp.net asp.net-mvc visual-studio asp.net-mvc-5 visual-studio-2015


【解决方案1】:

看起来您的 ClassLibrary1 项目是类库包,而不是类库项目。类库包用于创建可以针对任何平台的 Nuget 包。

与类库项目 (.csproj) 相比,ASP.NET 5 类库项目 (.kproj) 有许多好处:

ASP.NET 5 类库轻松支持将项目交叉编译到多个目标,例如 aspnet50、aspnetcore50、net45 和各种其他可移植类库变体。这包括对 Intellisense 的丰富 Visual Studio 支持,以通知您哪些 API 可用于哪些目标。 NuGet 包是自动创建的,这对于类库来说是非常常见的事情。 在文件系统发生变化时自动刷新解决方案资源管理器等工作效率更高。尝试合并 *.csproj 文件中的冲突更改时,源代码管理中的冲突更少。 可以跨平台编译(部分是因为它不依赖于 MSBuild) 您可以从 *.kproj 项目中引用 *.csproj 项目(这在 Visual Studio 2015 的新预览版中变得更加容易),但通过一些手动步骤始终可以实现。

为什么名称中有“ASP.NET”?

就名称而言,这是一个很快就会被解决的历史遗迹。新项目类型的用途远远超出 ASP.NET 5 应用程序。期待在 Visual Studio 的未来预览版中看到新名称:

.NET 控制台应用程序(跨平台) .NET 类库(跨平台) 随着 Visual Studio 2015 RC 的发布,您可以看到更新的项目模板名称:

类库(包) 控制台应用程序(包) 它们使用 project.json 文件和 .NET 执行环境 (DNX) 来构建、运行和打包(到 NuGet 包中)项目。

这些项目模板继续显示在“Web”节点下的“新建项目”对话框中,但现在也显示在“Visual C#”主节点中。

这是一个很好的链接,因为您需要引用新的 clas 库未构建的 dll。 https://evolpin.wordpress.com/2015/01/25/vnext-and-class-libraries/

【讨论】:

  • 是的,但我可以在我的 Web 应用程序中引用“类库包”项目 (.kproj) 吗?就像类库项目(.csproj)。
  • 正如 citykid 所说,发布后您可以将其用作可移植的类库。目前无法从 csproj-projects 引用 project.json-projects
  • 这根本不能回答问题。 OP 正在尝试从常规 .NET 应用程序中引用“类库(包)”;这个答案没有解释如何做到这一点,而链接的文章只解释了如何做相反的事情(参考 ASP.NET 5 应用程序中的常规 .NET 库)。
【解决方案2】:

使用普通的旧类库或使用Nuget类库,将其发布到本地或公共 Nuget 存储库,然后从那里将其添加到 Web 项目。

【讨论】:

    【解决方案3】:

    我怀疑 ClassLibrary1 的依赖性,我什至可以在你的截图中看到,

    似乎 ClassLibrary1 正在寻找一些依赖的 dll,因此您可能需要先添加这些 dll,然后才能继续添加它。 类似的事情发生here too

    更多关于依赖的细节可以从这个MSDN link收集你可以直接跳转到Bower和NPM依赖的依赖节点

    【讨论】:

      猜你喜欢
      • 2017-03-17
      • 2013-01-12
      • 2011-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多