关于asp.net核心:VS 2015中新的类库(包)是什么

What is the new Class Library (Package) in VS 2015

我一直在尝试用pl、bll和dal做一个3层的示例应用程序,现在我正在做一些单元测试。我正要将BLL引用到我的测试项目中,但突然间它就不允许了。我发现这个类库和普通类库不同。

所以,现在,我不知道应该用常规类库替换它还是继续使用新的类库(包)。什么适合这种情况?假设这个三层程序是一个云应用程序。

或者正确的问题是:

  • 旧的类库和新的类库有什么区别?
  • 什么时候合适?我找不到清晰的答案。
  • 你能用当前的MS测试用新的进行单元测试吗?

  • 如果您要使用ASP.NET-CORE,我建议您坚持使用较新的类库(包),除非您有理由在其他不使用DNX编译/执行的项目中使用相同的库。

  • Class Library (.csproj)Class Library Package (.kproj)。这两种类型的项目之间的最大区别在于类库(包)将使用文件project.json和dnx编译、执行和打包库,而标准类库(.csproj)使用.NET框架编译和执行库.dll文件。

    附带说明:包项目(.kproj)将自动创建一个nuget包(作为类库(.csproj),您必须手动构建nuget包)。

  • 你需要知道的主要事情是你可以在Class Library (Package) (.kproj)中引用Class Library (.csproj),而不是相反,因为dnx。所以这意味着目前所有的单元测试库都不能使用ASP.NET核心。一个很好的解决方法是在一个Class Library (Project) (.kproj)中使用XUnit。如果此库在不支持DNX的其他项目(如旧的MVC5项目和新的ASP.NET核心项目之间)之间共享,则不能使用类库包.kproj,并且必须与标准类库.csproj项目一起使用。

  • 请参阅此答案https://stackoverflow.com/a/31751864/1284637如何使单元测试与ASP.NET核心一起工作。正如2中所回答的,app.net-core目前不支持单元测试库,这意味着MSTest也不会工作。

  • 我希望这能帮你理清思路。


    1号和2号已经被尼克·德·比尔完美地回答了(我的恭维是@nick de beer)。

    但就3个问题而言,截至2015年12月,有一个名为mstest.runner.dnx的Nuget包,其目标是dnx,尤其是mstest。您可以在这里阅读如何在dnx项目中设置它:https://dannyvanderkraan.wordpress.com/2016/03/07/asp-net-core-1-0s-dnx-and-mstest/