簡體   English   中英

VS 2017 .NET 4.6.2新的ASP.NET核心Web應用程序(.NET Framework)默認為x86平台

[英]VS 2017 .NET 4.6.2 new ASP.NET Core Web Application (.NET Framework) defaults to x86 platform

為什么?

Web應用程序(.NET Framework)和Core Web應用程序(.NET Core)都是針對AnyCPU平台的。

這是一個錯誤還是有一些價值嗎?

我在Windows 10 x64上安裝了2017年4月18日VS 2017更新。

Microsoft Visual Studio Enterprise 2017版本15.1(26403.7)發布VisualStudio.15.Release / 15.1.0 + 26403.7 Microsoft .NET Framework版本4.6.01586

我想這是出於兼容性原因。 x86可能會引用<RuntimeIdentifier>中的<RuntimeIdentifier>

<PropertyGroup Condition="'$(TargetFramework)' == 'net462'">
  <RuntimeIdentifier>win7-x86</RuntimeIdentifier>
</PropertyGroup>

其中一個原因是需要拉動Nuget依賴項,ASP.NET核心依賴於一些本機/非托管庫(=不是用C#/ CLR編寫的庫,而是用C / C ++編寫的庫),比如libuv(參見NuGet )這是ASP.NET Core使用的異步套接字庫。

如果默認為x64則無法在x86操作系統上恢復/運行此類應用程序,因此到目前為止唯一合理的設置是x86。

對於.NET CLR / IL代碼,體系結構(x64或x86)並不重要,但對於這些外部依賴項,它確實如此。 這也是為什么當你將目標net45netstandard1.x為csproj的project.json項目轉換時會出現錯誤的原因,你需要將上面的xml代碼添加到你的csproj中,以便給NuGet一個提示它應該恢復哪種類型的體系結構。

您可以安全地將其更改為<RuntimeIdentifier>win7-x64</RuntimeIdentifier> ,如果您和您的同事都沒有在x86 OS上開發項目。 有關有效RID(RuntimeIdentifiers)的列表,請參閱ASP.NET Core 文檔 當然,對於.NET Framework,您僅限於win* RID。

它應該沒什么好擔心的,你可以把它保留為默認值。 通常它沒關系,因為大多數庫都在NuGet包中附帶x64和x86。 但是可能有一些庫只在一個或兩個上運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM