ASP.NET vNext 可以使用非 vNext 引用吗?

Posted

技术标签:

【中文标题】ASP.NET vNext 可以使用非 vNext 引用吗?【英文标题】:Can ASP.NET vNext use non-vNext references? 【发布时间】:2014-10-24 10:53:09 【问题描述】:

所以我在 VS 14 CTP 中有一个 ASP .NET vNext 项目。我的目标是 .NET Framework 4.5.1。我添加了对 NuGet 包的引用,该包没有特定于 vNext 的构建。

Visual Studio 现在在编辑器/Intellisense 中显示包的用法,没有错误。但是在编译时,我得到“找不到命名空间'MyPackage'”的错误。

我的理解是,只要我以现有的 .NET Framework 4.5.1 为目标,我就可以添加对 .NET Framework 程序集的引用。不是这样吗?我可以解决这个错误吗?

【问题讨论】:

NuGet 包是否支持 4.5.1? 是的,它确实支持 4.5.1。 【参考方案1】:

如果您在 project.json 中同时列出了 k10 和 net451 框架,VS 14 默认会针对这两个框架构建项目。在这种情况下,如果没有为 k10 框架构建任何程序集,则构建将失败并出现未找到包的错误。所以 net 451 包应该专门添加到 project.json 的 net451 部分。我只是粘贴一个示例 project.json,其中 Microsoft.Bcl 包在 net451 部分中列出


"dependencies": 
    "Microsoft.AspNet.Server.IIS": "1.0.0-*",
    "Microsoft.AspNet.Mvc": "6.0.0-*"
    <more packages>
,
"configurations": 
    "net451": 
        "dependencies": 
            "Microsoft.Bcl": "1.1.9"
                    
  
 

【讨论】:

这对我有用,但我必须从配置列表中完全删除 k10 以避免 VS 尝试为 k10 构建。拥有一个空的依赖项列表并没有帮助(VS 14 CTP 3)。我已经编辑了这个答案,所以稍后阅读答案的任何人都会清楚这一点。【参考方案2】:

根据ASP.NET improvements in Visual Studio 2015 CTP 5,您将能够从 vNext 项目中引用标准项目。您可以通过简单地通过右键单击“添加引用”菜单来执行此操作,或者手动将其添加到 dependecies 下的 project.json 中。

只需避免循环引用(A 引用 B 和 B 引用 A),因为这将导致 Visual Studio 每 5 秒自动刷新一次窗口的焦点。

【讨论】:

以上是关于ASP.NET vNext 可以使用非 vNext 引用吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 asp.net identity 3 (vnext) 使用的表名?

ASP.NET 5 (vNext) 中的身份验证

ASP.NET 5 (vNext) - 获取配置设置

ASP.NET 5 (vNext) - 获取配置设置

ASP.NET vNext - 重用现有的 nuget 包

ASP.NET vnext 和打开数据库