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

5

有没有一种相对方便的方法在MVC6中包含标准类库?我认为标准的添加引用对话框可以创建一个包装器,但是我没有成功。将其发布为Nuget包似乎对于持续开发调试非常不方便。

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

1个回答

15

我看到了一些不同的方法(使用dnu实用程序或使用VS添加引用)。根据你想要引用一个现有程序集还是引用解决方案中的非 ASP 5 项目,做法也略有不同。

当你要给一个不在解决方案中的现有程序集添加引用时:

  • 使用dnu wrap命令添加引用。你可以打开开发人员命令提示符并导航到你的解决方案文件夹,或者更简单地在Visual Studio中打开包管理器控制台。

    现在如果你想添加对fullPathToYourDll\Foo.dll的引用,则需要运行以下命令(其中的Framework参数是在包装程序集时必需的,并且被定义为被包装程序集的目标框架):

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

这将在你的 asp 5 解决方案文件夹中生成/更新 wrap 文件夹,其中包括一个名为 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-*",
    }
  }
},
  • 或者,使用Visual Studio。在ASP 5项目中右键单击引用,选择添加引用...,然后单击浏览。现在导航到包含程序集的文件夹并选择dll文件。

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

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

    • 使用dnu wrap命令添加引用

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

    dnu wrap ".\myNonAsp5Project\MyNonAsp5Project.csproj"
    

    就像向现有程序集添加引用一样,这将在您的asp 5解决方案文件夹内生成/更新wrap文件夹。不过这次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.NET 5项目的project.json文件,包括对封装程序集的引用,例如:

    "frameworks": {
      "dnx451": {
        "dependencies": {
          "MyNonAsp5Project": "1.0.0-*",
        }
      }
    },
    
  • 或者使用Visual Studio。在ASP 5项目中右键单击引用,选择添加引用...。现在在左侧展开项目,选择该项目,然后单击确定。

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

  • PS。最近我一直在升级到Win10并安装/卸载软件,不知何故我最终得到了一个环境变量Platform=MCD 。这将被MSBuild视为默认平台,并可能会给您带来一些痛苦。具体而言,在运行dnu wrap命令包装csproj文件时,我遇到了错误无法解析引用。(因为内部使用msbuild来解析csproj引用)。


    非常详细的回答 - 非常感谢! - Kelly Robins

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