从ASP.NET 5引用.NET 4.6项目会导致生成错误

时间:2015-11-22 18:11:25

标签: asp.net-core

在我的ASP.NET 5 RC1项目中(仅针对dnx46)我正在尝试添加一个针对.net 4.6的(经典)类库项目的引用。

我在构建时遇到此错误: ... \ MSBuild \ 14.0 \ bin \ Microsoft.Common.CurrentVersion.targets(1819,5):警告MSB3274:无法解析主要引用“... \ ClassLibrary1.dll”,因为它是针对“。”构建的。 NETFramework,Version = v4.6“框架。这是比当前目标框架“.NETFramework,Version = v4.5.1”更高的版本。

为什么会这样?我的ASP.NET 5项目没有针对4.5.1。根据project.json文件,它只针对dnx46。我在任何地方都找不到.net 4.5.1。

这是我的WebApplication项目的project.json:

{
  "version": "1.0.0-*",
  "compilationOptions": {
    "emitEntryPoint": true
  },

  "dependencies": {
    "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
    "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final"
  },

  "commands": {
    "web": "Microsoft.AspNet.Server.Kestrel"
  },

  "frameworks": {
    "dnx46": {
      "dependencies": {
        "ClassLibrary1": "1.0.0-*"
      }
    },
  },

  "exclude": [
    "wwwroot",
    "node_modules"
  ],
  "publishExclude": [
    "**.user",
    "**.vspscc"
  ]
}

这是“包装”过程为我的ClassLibrary项目创建的project.json:

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

2 个答案:

答案 0 :(得分:2)

如果使用VS 2015 Update 1构建警告仍然存在,但Web应用程序运行良好,可以从.net4.6程序集调用方法。

答案 1 :(得分:0)

您可能正在体验VS 2015. Setting right target framework for ASP.NET 5 web project。尽管项目针对4.6框架,但问题与IIS目标4.5.1有关。

从Visual Studio构建或运行IIS时,是否发生问题?

以下内容适用于我们。

ClassLibraryNet46

这是一个经典的.NET Framework类库,它以.NET 4.6作为目标框架。有一个班级。

BowserKingKoopa.cs

namespace ClassLibraryNet46
{
    public class BowserKingKoopa
    {
        public static string GetMessage()
        {
            return "Hello to BowserKingKoopa from ClassLibraryNet46!";
        }
    }
}

WebApplicationNetCore

这是一个只有Startup.cs类的ASP.NET核心Web应用程序。我们使用Visual Studio添加对Net46项目的引用(右键单击,添加引用...)

Startup.cs

using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Hosting;
using Microsoft.AspNet.Http;

namespace WebApplicationNetCore
{
    public class Startup
    {
        public void Configure(IApplicationBuilder app)
        {
            app.UseIISPlatformHandler();

            app.Run(async (context) =>
            {
                var message = 
                    ClassLibraryNet46.BowserKingKoopa.GetMessage();

                await context.Response.WriteAsync(message);
            });
        }

        public static void Main(string[] args) => 
            WebApplication.Run<Startup>(args);
    }
}

project.json

{
  "version": "1.0.0-*",
  "compilationOptions": {
    "emitEntryPoint": true
  },

  "dependencies": {
    "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
    "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final"
  },

  "commands": {
    "web": "Microsoft.AspNet.Server.Kestrel"
  },

  "frameworks": {
    "dnx46": {
      "dependencies": {
        "ClassLibraryNet46": "1.0.0-*"
      }
    }
  }
}