我一直在尝试使用PL,BLL和DAL进行示例3层应用程序,现在我正在进行一些单元测试。我准备将BLL引用到我的测试项目中,但突然之间它不会允许它。我发现这个类库与常规类库不同。
所以,现在,我不知道是否应该将其替换为常规类库或继续使用新的(包)。什么适合这种情况?可以说这个3层程序是一个云应用程序。
或许正确的问题是:
答案 0 :(得分:3)
如果您要使用asp.net-core,我建议您坚持使用较新的类库(Package),除非您有理由在不使用DNX编译/执行的其他项目中使用相同的库。 / p>
Class Library (.csproj)
和Class Library Package (.kproj)
。这两类项目之间的最大区别在于类库(Package)将使用文件project.json
和DNX来编译,执行和打包库,而标准类库(.csproj)使用.net用于编译和执行库.dll文件的框架。
附注:包项目(.kproj)将自动创建一个NuGet包(其中作为类库(.csproj),您必须手动构建NuGet包)。
您需要知道的主要事情是,您可以在Class Library (.csproj)
中引用Class Library (Package) (.kproj)
而不是相反,因为DNX。所以这意味着目前所有单元测试库都不能与asp.net核心协同工作。解决这个问题的一个好方法是在XUnit
中使用Class Library (Project) (.kproj)
。如果此库在不支持DNX的其他项目之间共享(例如,在较旧的MVC5项目和新的ASP.NET Core项目之间),则无法使用类库包.kproj
并且必须符合标准类库.csproj
项目。
请参阅此答案https://stackoverflow.com/a/31751864/1284637如何使用asp.net核心进行单元测试。如2中所述,app.net-core目前不支持单元测试库,这意味着MSTest也无法工作。
我希望这有助于为您解决问题。
答案 1 :(得分:2)
但就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/