我最近将ASP.NET Core 1.1应用程序升级到2.x.该项目(以及解决方案中的所有其他项目)现在以完整的4.6.1框架为目标(之前针对完整的4.5.2框架)。 Visual Studio版本15.5.7。
执行此操作后,同一解决方案中的所有类库项目都会对NETStandard.Library.2.0.2
进行多次破坏/黄色引用。奇怪的是,解决方案仍然没有问题地构建,并且在构建输出中没有生成相关的警告或错误。所有其他引用都很好,包括ASP.NET项目中的所有引用(意味着项目没有此问题)。
有谁知道这里会发生什么?
疑难解答步骤
ref
之前没有出现奇怪的“双反斜杠”:环境详情
dotnet --info
:.NET命令行工具(2.1.4)
产品信息:版本:2.1.4提交SHA-1哈希: 5e8add2190
运行时环境:操作系统名称:Windows操作系统版本:10.0.16299 操作系统平台:Windows RID:win10-x64基本路径:C:\ Program 文件\ DOTNET \ SDK \ 2.1.4 \
Microsoft .NET核心共享框架主机
版本:2.0.5构建: 17373eb129b3b05aa18ece963f8795d65ef8ea54
请随时告诉我其他相关信息。
更新:根据请求的CSProj示例(有些事情需要编辑) https://gist.github.com/mikeomeara1/0edd3b83447473accd3350ffc974c62c
答案 0 :(得分:2)
旧的.NET Framework项目系统不能正确支持.NET Standard Library 2.x,至少在设计时是这样。它需要新的.NET Core SDK项目系统。
我最近关注的良好迁移方法 - https://www.natemcmaster.com/blog/2017/03/09/vs2015-to-vs2017-upgrade/。
答案 1 :(得分:1)
@MattBrooks和@ScottChamberlain是正确的,这是一个Visual Studio csproj
问题,并且链接@MattBrooks提供是这个问题的正确答案(我已将其标记为这样)。但是,我也希望与大家分享我的个人经验,希望它能帮助那些发现这个过程令人费解和困惑的人(而且将这个问题转化为对问题的更新似乎并不正确)。正如马特所说,“它可能非常令人困惑,有时工具也无济于事。”
以下是我用来转换项目的确切步骤。在尝试手动转换一对夫妇后,我放弃并重建了它们:
<TargetFramework>
更改为net461(或者您需要的任何内容。请注意,无法通过Target Framework UI下拉列表完成。您将看到的只是“净标准“)。<package>
中的所有packages.json
元素(如果您没有package.json
,请参阅接受的答案中的大纲,将您的csproj <References>
转换为{ {1}})<PackageReferences>
<ItemGroup>
元素<package>
- &gt; <package id=
<PackageReference Include=
- &gt; targetFramework=".*"
<blank>
- &gt; version
Version
没有<Reference Include=...
例如Version=4.1.0.0, Culture=neutral, PublicKeyToken=..."
看起来像<Reference Include="System.Web" />
并粘贴到新的csproj并保存。node_modules
回到新项目中。我还要注意,如果您(像我一样)在csproj 和 a <Reference>
中的包中有package.json
个标签,我发现package.json
在准确版本方面是准确的。
我不能够转换单个MVC4 / WebAPI2项目,因为新项目格式似乎没有办法告诉它“这是一个Web项目,运行IIS并调试“......因为所有新的Core项目都期望 static void Main
。可能是一个不同的问题。
我能够使用此处提供的答案迁移MVC4 / WebAPI2应用程序:https://stackoverflow.com/a/49655107/3892531
祝你好运!