- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
.NET 4.7.1 应该解决我们在从完整框架引用 netstandard 2.0
库时遇到的问题。尽管存在一些持续且令人痛苦的 dll 冲突警告和相关问题,并且需要手动更新到 PackageReferences ( see this wondeful extension ),但它确实做到了。尽管如此,人们还是可以让它工作,尽管请参阅下面的注释 1,如果我可以说:不幸的是,至少可以说,在这个问题和相关问题上还没有 VStudio 帮助或太多指导,到目前为止,人们必须找到这样的github 上的反向 channel 帮助。理想情况下,这个问题本身应该被告知:ASP.NET MVC 5 尚未在 razor 中支持 netstandard ...希望他们能向我们发送消息,如果这是真的!将节省无尽时间的浪费!但事实真的是这样吗?或者有解决办法吗?
这就是 ASP.NET MVC 5 项目(甚至是针对 4.7.1 的项目)的问题。尽管纯 .cs 代码可以工作(包括在 Controller 中),但对于 razor View (.cshtml
文件)中的任何代码来说,情况并非如此。来自 netstandard
库的 razor View 中引用的任何类型都会完全失败。
为了重现这个问题并确保这不仅仅是我自己的代码,我重现了这个 by making a bran new ASP.NET MVC 5 project (on github)在最新版本的 VStudio 2017(甚至预览版本 15.7.0 Preview 4.0)中,然后创建一个新的 netstandard
项目,其中仅包含几种类型,这样我就可以练习在MVC 5 View 页面。果然,还是失败了。例如,来自 netstandard 项目的这个简单类型:
public enum AnimalType { Cat, Dog, Zebra, Alligator }
如果您将该枚举作为传递到页面的 View 模型中的类型,如果您在 razor 页面中引用该属性,您将收到编译时错误以及运行时错误,并显示:
The type 'Enum' is defined in an assembly that is not referenced. You must add a reference to assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. AspMvc5WebApp471
正如该存储库中详细介绍的那样,我什至尝试重新编译我自己的 Microsoft.CodeDom.Providers.DotNetCompilerPlatform
版本以在 web.config
中引用它,但是这并没有解决问题。
因此,很高兴听到 ASP.NET 团队或其他任何可能知道如何解决此问题以及该解决方案可能需要什么的人的来信。或者,如果 ASP.NET MVC 5 根本无法与 netstandard
一起使用,那么很高兴知道这是否是消息,以及是否可能会支持 netstandard
ASP.NET MVC 5 在不久的将来,或者它是否在某个地方的路线图上?也许到底是什么原因导致了这次失败?当然,最高兴听到是否有可以立即应用的修复程序,但无论哪种方式,我们都需要知道,否则 netstandard
对于我们这些无法应用的人来说基本上毫无用处只需在一天内转储 ASP.NET MVC 5(在现实世界中,正如我们所希望的那样......)非常感谢。
(注1:Net Framework 4.7.1曾被我和其他很多人热切期待,有一段时间据说它会解决很多痛点,但不幸的是它推出了自己的一套endless dll hell like problems ,或参见 here 、 or here 、 or here 。例如,参见 System.Net.Http
上的讨论(绑定(bind)重定向不仅会消除所有冲突警告,它们还经常带来自己开发非常痛苦的东西)。现在有些人希望 4.7.2 能够解决所有这些问题,尽管它没有为我解决这些 ASP.NET MVC 5 问题)
最佳答案
我查看了解决方案(很棒的解释@Nicholas Petersen!!),我发现在 Razor 编译时您缺少对 netstandard.dll 的引用(这就是错误的原因)。
我将其添加到编译期间使用的程序集列表中,如下所示:
<add assembly="netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51" />
我现在的部分如下所示:
<system.web>
<compilation>
<assemblies>
<add assembly="System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<add assembly="netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51" />
</assemblies>
</compilation>
</system.web>
通过这一更改,我能够让 IDE 向我显示 cshtml 文件中模型的 Intellisense 和呈现的页面!
它在 .NET Framework 4.7.1 上运行,我希望它可以在 .NET Framework 4.7.2 上运行。也是如此。
注意:IDE 中仍会出现红色曲线,并显示有关缺少 Enum 类型的错误消息。但由于这不会影响功能(智能感知工作并且代码运行),我希望现在可以接受。
关于asp.net-mvc - .NET 4.7.1 中的 ASP.NET MVC 5 razor View 中引用 netstandard 2.0 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50165910/
我创建了一个.net核心类库包并上传到nuget.org 在依赖项部分说我的项目依赖于 .NetStandard 1.4,即高于 1.6 的 NetStandard.Library 为什么版本号会出现
使用以下项目创建解决方案。 一个.NetStandard2.0项目,命名为“1” 一个.NetStandard2.0项目,命名为“2” 在2中添加项目1的引用 .Net4.6.1 控制台项目将其命名为
我明白了 Unable to resolve 'NETStandard.Library (>= 1.6.1)' for '.NETStandard,Version=v2.0'. 在将我的 aspnet
这些天我真的对 .NET 中平台的术语感到困惑 - 在我们拥有 PCL 之前我曾经理解它。 我找到了以下文件: .NET Platform Standard .NET Standard Library
我在 visual studio 2017 中,我们的团队还有其他针对 .netstandard 框架的项目,但是当我尝试将我的项目重新定位到 .netstandard 时,它没有显示选择 .nets
我在 visual studio 2017 中,我们的团队还有其他针对 .netstandard 框架的项目,但是当我尝试将我的项目重新定位到 .netstandard 时,它没有显示选择 .nets
由于有兴趣将我们的服务器系统迁移到.Net core,我目前正在工作中尝试 VS2017。我已经将几个小工具项目切换为针对 .NetStandard 1.2(重新创建和移动文件),并且所有内容都在本地
假设我有一个类库,我想以 netstandard1.3 为目标,但也使用 BigInteger。这是一个简单的示例 - 唯一的源文件是 Adder.cs: using System; using Sy
我正在构建一个 .NETStandard 库(1.3 版),在库中使用异步等待工作正常,直到我添加对 Windows.Foundation.UniversalApiContract 的引用。添加此引用
在 .NET Core 和 .NET Framework 4.x 中,以下代码按预期工作: var match = Regex.Match(src, pattern) .Groups
我正在努力了解 NETStandard 类库,以了解我正在处理的潜在 NuGet 包。然而,这是我第一次尝试使用 NuGet 和 NETStandard 包,所以我在某些方面有点迷茫,其中之一是引用系
我有 2 个项目(VS 2017 RC) MyLib (NetStandard1.4) - 引用文献Newtonsoft.Json MyConsoleApp(普通、传统控制台应用程序,针对 .Net
我正在将一个针对 net472 的项目移植到 netstandard。我遇到的最后一个 System.Web 依赖项是 HttpServerUtility.UrlTokenEncode(Byte[])
我的 Xamarin Android 项目引用了 .NetStandard 项目。Android 项目中的断点工作正常,但在 .NetStandard 代码中却没有。有什么办法可以解决这个问题吗? 最
我的 Xamarin.Forms 以 .NETStandard 1.4 为目标并导入可移植项目的项目在系统引用方面存在问题。 为 .NETCore 导入了相关的可移植配置文件和系统 NuGet 包,但
我尝试使用 MSBuild 支持设置干净的 CI 构建代理。我用 Build Tools for Visual Studio 2017和 component directory list Start-
我看到评论说我将“需要 Core 3.0”,但我不确定这到底是什么意思。 Core 3.0 安装在我的系统上,如果我愿意,我可以创建一个 Core 3.0 项目,但据我所知,我无法创建一个同时针对 C
我在 Visual Studio 2019 版本 16.5.0 Preview 1 中使用 .NET Core 3.1 运行带有 Http 触发器的 Azure 函数,但出现以下错误: The 'Ht
最近 Xamarin 宣布支持 NetStandard(请参阅 https://releases.xamarin.com/stable-release-cycle-7-service-release-
在 net45 中,Encoding.GetEncoding("Shift-JIS") 工作正常,但在 netstandard 下它会抛出: System.ArgumentException : 'S
我是一名优秀的程序员,十分优秀!