ASP.NET VNext 中的遗留程序集引用错误

5
我正在使用VS2015 CTP5参考一个使用4.5.1编译的传统类库。在编译过程中,我收到以下警告:
“D:\components.dll”主要引用无法解析,因为它是针对“.NETFramework,Version=v4.5.1”框架构建的。这是高于当前目标框架“.NETFramework,Version=v4.5”的版本。
在添加引用后,这是我的project.json文件。
"frameworks": {
    "aspnet50": {
        "dependencies": {
            "components": "1.0.0-*"
        }
    }
},

你的vnext项目类型是什么?如果你的当前应用程序目标是4.5,而你的类库是4.5.1,那么如果你有ctp5的vnext项目,它应该是4.6。 - dotnetstep
3个回答

2

"组件"库是为.net 45构建的,假设您在旧版本的Visual Studio中构建了该库,则它将无法在aspnetcore5上工作,但可以在aspnet5上工作(这是.net的新版本)。如果您想摆脱错误并仍然使用您的组件库,则需要从project.json文件中删除aspnetcore5 json节点,但您正在构建的项目将与aspnetcore5不兼容。因此,您的frameworks部分的project.json文件应如下所示。

"frameworks": {
    "aspnet50": {

        "frameworkAssemblies": {
            "System": "4.0.0.0"
        },
        "dependencies": {


        }
    },      
    "net45": {
        "dependencies": {  "components": "1.0.0"},
        "frameworkAssemblies": { }

    }

}

你的参考内容应该像这样,组件库旁边有警告标志,因为我在代码中没有它。
你可以查看这个问题以获取更多信息。
问题1,问题2。

1
将库添加到frameworkDependencies而不是dependencies
"net45": {
    "frameworkAssemblies": {
        "components": "1.0.0"
    },
    "dependencies": {
        // NuGet packages go here
    }

维克多,我认为你需要将“components”:“1.0.0”移动到依赖项节点,如果我没有弄错的话,frameworkAssemblies仅用于.NET引用,而依赖项适用于任何NuGet或项目引用。 - Son_of_Sam

0

对我来说,以上方法都没有奏效,经过花费了很多时间的调查研究...我终于找到了解决方案!

我必须在NuGet Package Explorer中为我的dll创建一个新的包,保存并将其导出到本地文件夹(使用“文件”->“保存”和“文件”->“导出”命令)。然后将我的本地存储库(文件夹)声明给Visual Studio,在“工具”->“选项”->“NuGet包管理器”->“包源”中插入一条记录以供我的本地存储库使用-请参见下面的图像。

Package Sources in VS2015


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