【问题标题】:How to use existing code in asp.net vNext如何在 asp.net vNext 中使用现有代码
【发布时间】:2015-03-21 05:54:58
【问题描述】:

尝试用 asp.net vNext 玩一下。

假设我有 MyCode.dll 程序集,其中包含一些我拥有并希望在我的 be vNext 项目中使用的代码。如何引用现有的 .net 4.5 程序集?

我已将其打包到 nuget 包中,然后使用本地提要将其添加到 vNext 项目中。还使用kpm restore实际下载包。

看起来包添加成功,但没有来自MyCode.dll 的代码可用,它根本没有被intelliSence 使用并构建抛出Type or namespace chould not be found

我可以将代码从 MyCode.dll 移动到 asp.net 5 类库,但我需要重用其他项目也使用的现有 dll,例如旧版本的 asp.net 等。

【问题讨论】:

标签: asp.net-core


【解决方案1】:

我的解决方法是添加一个本地 nuget 服务器并正确规范、打包并将程序集推送到 nuget 服务器,这样您就可以定位多个 .NET 版本,例如 aspnetcore5、aspnet5 和 net45。在创建程序集的规范文件时,不要忘记包含每个版本的相应依赖项。

要创建本地服务器,请参阅指令here

请参阅示例规范。

<dependencies>
  <group targetFramework="net45">
    <dependency id="Newtonsoft.Json" version="6.0.6" />
  </group>
  <group targetFramework="aspnet50">
    <dependency id="Newtonsoft.Json" version="6.0.6" />
    <dependency id="System" version="4.0.0.0" />
    <dependency id="System.Core" version="4.0.0.0" />
    <dependency id="Microsoft.CSharp" version="4.0.0.0" />
    <dependency id="mscorlib" version="4.0.0.0" />
  </group>
  <group targetFramework="aspnetcore50">
    <dependency id="Newtonsoft.Json" version="6.0.6" />
    <dependency id="System.Runtime" version="4.0.20-beta-22231" />
    <dependency id="System.Collections" version="4.0.10-beta-22516" />
  </group>
</dependencies>

【讨论】:

    【解决方案2】:

    如果您使用latest VS 2015 CTP,最简单的方法是将现有的 .NET 4.5 项目添加到您的 ASP.NET 5.0 解决方案中,并使用“添加引用”对话框来引用您的 4.5 库。这将使您的 project.json 文件看起来像这样:

    "frameworks": {
        "aspnet50": {
            "dependencies": {
                "MyClassLib": "1.0.0-*"
            }
        },
        "aspnetcore50": { }
    },
    

    在运行完整 ASP.NET 5.0 运行时时,您只能使用 4.5 库,因此请确保项目设置未设置为针对 ASP.NET 5.0 Core 运行时。如果您希望您的库是跨平台的并以 Core 运行时为目标,您需要将其重新构建为 ASP.NET 5.0 库。

    【讨论】:

    • 感谢您的回答,但这仅在您拥有 csproj 时才有效。如果你只有 dll 怎么办?
    • 一个 nuget 服务器会有所帮助,它们很容易设置,请参阅上面的 anserw
    【解决方案3】:

    当我将“旧库”添加到新的 ASP.NET 时,我得到了内部服务器 500。IISExpress 中有一些错误。 特别是 System.Reflection.ReflectionTypeLoadException:无法加载一种或多种请求的类型。检索 LoaderExceptions 属性以获取更多信息。

    经过研究和使用 DNX 进行一些内部调试后,我们终于找到了故障的根源。

    显示名称为“System.Web.Mvc”的程序集未能加载到 ID 为 1 的 AppDomain 的“匿名”绑定上下文中。失败的原因 是:System.IO.FileNotFoundException:无法加载文件或程序集 System.Web.Mvc,版本 = 5.2.3.0,文化 = 中性,PublicKeyToken = 31bf3856ad364e35' 或其依赖项之一。系统无法 找到指定的文件。

    由于“我的旧”库正在使用旧 MVC。我在提交以下命令后更新了我的库:

    安装包 Microsoft.AspNet.WebApi.Core -version 5.2.3

    得出以下结论:

    如果您尝试在 ASP.NET vNext 中使用的库依赖于或使用 MVC 5.2.3 或更早版本,您将无法在新框架内使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-07
      • 1970-01-01
      • 2014-12-10
      • 1970-01-01
      • 2023-03-28
      • 2015-01-29
      • 1970-01-01
      • 2015-03-14
      相关资源
      最近更新 更多