如何在 MVC6 中使用标准 class 库?

How do I use a standard class library in MVC6?

是否有一种相当方便的方法可以在 MVC6 中包含标准 class 库?我认为标准的添加参考对话框可以创建一个包装器,但我没有任何运气。将其发布为 nuget 包对于正在进行的开发调试来说似乎非常不方便。

如果没有包装器,是否有将标准 class 库转换为新类型的内置方法?

到目前为止,我已经看到了几种不同的方法(使用 dnu 实用程序或使用 VS 添加引用)。它也略有不同,具体取决于您是要引用现有程序集还是要引用解决方案中的非 asp 5 项目。

当您想要添加对不属于您的解决方案的现有程序集的引用时:

  • 使用dnu wrap命令添加引用。您可以打开开发人员命令提示符并导航到您的解决方案文件夹,或者更简单地打开 visual studio.

    中的包管理器控制台

    现在,如果您想添加对 fullPathToYourDll\Foo.dll 的引用,您将 运行 以下命令(包装程序集时需要框架参数,定义为 要包装的程序集的目标框架):

    dnu wrap "C:\fullPathToYourDll\Foo.dll" -f 4.5.1
    

    这将 generate/update wrap 文件夹放入 asp 5 解决方案文件夹中,其中包含一个文件 mySolution\wrap\Foo\project.json,如下所示:

    {
      "version": "1.0.0-*",
      "frameworks": {
        "net451": {
          "bin": {
            "assembly": "../../../FooSln/Foo/bin/Debug/Foo.dll",
            "pdb": "../../../FooSln/Foo/bin/Debug/Foo.pdb"
          }
        }
      }
    }
    

    最后,更新 asp 5 的 project.json 文件以包含对包装程序集的引用,如:

    "frameworks": {
      "dnx451": {
        "dependencies": {
          "Foo": "1.0.0-*",
        }
      }
    },
    
  • 或者,使用 VS。右键单击 ASP 5 项目中的引用,select 添加引用...,然后单击 浏览 。现在导航到包含程序集和 select dll 文件的文件夹。

    Visual studio 将为您更新包装文件夹(创建 mySolution\wrap\Foo\project.json),甚至会在您的 project.json 中添加依赖项(您的 asp 5项目).

当您想在解决方案中添加对非 asp 5 项目的引用时:

  • 使用dnu wrap命令添加引用

    该过程与之前添加对现有程序集的引用的场景非常相似。现在,如果您想在解决方案中添加对非 asp 5 项目的引用,您将 运行 以下命令:

    dnu wrap ".\myNonAsp5Project\MyNonAsp5Project.csproj"
    

    在添加对现有程序集的引用时,这将 generate/update wrap 文件夹放在 asp 5 解决方案文件夹中,尽管这次文件 mySolution\wrap\MyNonAsp5Project\project.json 略有不同,因为它包装的是项目而不是程序集:

    {
      "version": "1.0.0-*",
      "frameworks": {
        "net451": {
          "wrappedProject": "../../MyNonAsp5Project/MyNonAsp5Project.csproj",
          "bin": {
            "assembly": "../../MyNonAsp5Project/obj/{configuration}/MyNonAsp5Project.dll",
            "pdb": "../../MyNonAsp5Project/obj/{configuration}/MyNonAsp5Project.pdb"
          }
        }
      }
    }
    

    同样,您需要手动更新 asp 5 的 project.json 文件以包含对包装程序集的引用,如:

    "frameworks": {
      "dnx451": {
        "dependencies": {
          "MyNonAsp5Project": "1.0.0-*",
        }
      }
    },
    
  • 或者,使用 VS。右键单击 ASP 5 项目中的引用,select 添加引用...。现在展开左侧的 Projects,select 项目并单击确定。

    Visual studio 将更新包装文件夹(创建 mySolution\wrap\MyNonAsp5Project\project.json),甚至会在您的 project.json(您的 asp 5 项目中的那个)中添加依赖项。

PS。我最近一直在升级到 Win10 和 installing/uninstalling 东西,不知何故我最终得到了一个环境变量 Platform=MCD。这将被 MSBuild 作为默认平台,可能会给您带来一些痛苦。具体来说,当 运行 使用 dnu wrap 命令包装 csproj 文件时,我收到错误 Failed to resolve references。 (因为 internally 它使用 msbuild 来解析 csproj 引用)。