在VS2015中为类库添加引用

12

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

Solution1

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

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

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

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


我猜这不是拼写错误,我在弹出窗口中勾选了复选框,并且我已经添加了错误截图。谢谢! - Ricky Yip
有时我会遇到类似的错误,有时它们来自于想在添加引用时执行某些操作但失败的VS扩展,导致一切都失败了。你可以尝试这样做:手动编辑Web项目的项目文件,看看引用是否有效。你可以在VS内部或外部编辑csproj:卸载项目、编辑、重新加载项目(都在解决方案资源管理器的上下文菜单中)。 - citykid
谢谢citykid,我尝试手动添加ClassLibrary1,在重新加载项目后,ClassLibrary1旁边出现了“!”。 - Ricky Yip
好的,那很有帮助,看来库文件确实存在问题。找到这三个实际使用的dll文件,用ildasm或dotpeek打开它们,并检查它们依赖于哪个clr。您还可以在VS中检查构建设置,以确保所有目标.Net运行时都相同,并且都设置为AnyCPU。 - citykid
让我们在聊天中继续这个讨论。点击此处进入聊天室 - citykid
显示剩余3条评论
3个回答

7
看起来,您的ClassLibrary1项目是一个类库包,而不是一个类库项目。类库包用于创建可以针对任何平台的Nuget软件包。
ASP.NET 5类库项目(.kproj) 相对于类库项目(.csproj)有许多优点:
ASP.NET 5类库轻松支持跨编译项目到多个目标,例如aspnet50,aspnetcore50,net45以及各种其他可移植的类库变量。这包括丰富的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#"节点中。
如果您需要引用新类库无法生成的dll,请参考以下链接: https://evolpin.wordpress.com/2015/01/25/vnext-and-class-libraries/

是的,但我能否在我的Web应用程序中引用“Class Library Package”项目(*.kproj),就像类库项目(*.csproj)一样。 - Ricky Yip
正如citykid所提到的,一旦发布后,您可以将其用作便携式类库。目前无法从csproj项目引用project.json项目。 - pool pro
1
这完全没有回答问题。OP试图从常规的.NET应用程序中引用“类库(包)”,而这个答案并没有解释如何做到这一点,而且链接的文章只解释了如何做相反的事情(从ASP.NET 5应用程序中引用常规的.NET库)。 - Thomas Levesque

1
要么使用普通的类库,要么使用Nuget类库,将其发布到本地或公共Nuget仓库中,并从那里将其添加到Web项目中。

0

我对ClassLibrary1的依赖性表示怀疑,甚至可以在您的截图中看到enter image description here

似乎ClassLibrary1正在寻找一些依赖的dll文件,因此您可能需要先添加这些dll文件,然后再进行添加。 类似的情况也发生在这里

有关依赖项的更多详细信息可以从此MSDN链接收集,您可以直接跳转到Bower和NPM依赖项的依赖项节点


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接