【问题标题】:What is the new Class Library (Package) in VS 2015VS 2015 中新增的类库(包)是什么
【发布时间】:2016-02-11 11:36:14
【问题描述】:

我一直在尝试使用 PL、BLL 和 DAL 做一个示例 3 层应用程序,现在我正在做一些单元测试。我正要将 BLL 引用到我的测试项目,但突然它不允许它。我发现这个类库和普通的类库不一样。

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

或者正确的问题是:

  1. 旧的类库和这个新的有什么区别?
  2. 什么时候合适?我无法在谷歌上找到明确的答案。
  3. 您可以使用当前的 MS Test 对新的进行单元测试吗?

【问题讨论】:

    标签: visual-studio-2015 asp.net-core


    【解决方案1】:

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

    1. Class Library (.csproj)Class Library Package (.kproj)。这两类项目的最大区别在于类库(包)将使用文件project.json和DNX来编译、执行和打包库,而标准类库(.csproj)使用.net框架来编译编译并执行库 .dll 文件。

      旁注:包项目 (.kproj) 将自动创建 NuGet 包(而类库 (.csproj) 您必须手动构建 NuGet 包)。

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

    3. 查看此答案https://stackoverflow.com/a/31751864/1284637 如何使用 asp.net 核心进行单元测试。正如 2 中所回答的,app.net-core 目前不支持单元测试库,这意味着 MSTest 也将无法工作。

    我希望这可以帮助您解决问题。

    【讨论】:

      【解决方案2】:

      Nick De Beer 完美地回答了 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/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-25
        • 2016-01-17
        • 2015-03-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多