【问题标题】:How do I use a standard class library in MVC6?如何在 MVC6 中使用标准类库?
【发布时间】:2015-11-01 06:07:24
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

      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-*",
          }
        }
      },
      
    • 或者,使用 VS。右键单击 ASP 5 项目中的引用,选择 Add Reference...,然后单击 Browse。现在导航到包含程序集的文件夹并选择 dll 文件。

      Visual Studio 将为您更新 wrap 文件夹(创建 mySolution\wrap\Foo\project.json),甚至会在您的 project.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 5 的 project.json 文件,以包含对您包装的程序集的引用,如下所示:

      "frameworks": {
        "dnx451": {
          "dependencies": {
            "MyNonAsp5Project": "1.0.0-*",
          }
        }
      },
      
    • 或者,使用 VS。右键单击 ASP 5 项目中的引用,选择 Add Reference...。现在展开左侧的Projects,选择项目并点击ok。

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

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

    【讨论】:

    • 非常详细的答案 - 非常感谢!
    猜你喜欢
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-04
    • 1970-01-01
    • 2019-12-22
    相关资源
    最近更新 更多