我有一个.Net Core项目Web项目,由于各种原因希望将其转换为.Net Framework项目。
有没有一种简单的方法可以做到这一点,或者我必须重新开始并从以前的项目中导入代码
我已将核心项目加载到VS 2017 RC社区并在文本编辑器中打开* .csproj。
只需删除teg
<RuntimeFrameworkVersion>
并替换
<TargetFramework>netcoreapp1.1</TargetFramework>
至
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
毕竟在项目属性设置为任何其他框架并重置(VS重新加载和修复* .csproj文件)。
这在VS2017中对我有用:
从.net核心Web项目模板开始。
编辑* .csproj,看起来像这样:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net472</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore" Version="2.1.3" />
<PackageReference Include="Microsoft.AspNetCore.CookiePolicy" Version="2.1.2" />
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.1.1" />
<PackageReference Include="Microsoft.AspNetCore.HttpsPolicy" Version="2.1.1" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.1.2" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.1.2" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.RazorPages" Version="2.1.2" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.1.1" />
</ItemGroup>
</Project>
保存并关闭。
尝试运行项目。
PackReferences只是NuGet文件,如果版本与我的版本不同,您可以通过GUI添加它们。
这里没有任何答案对我有用。在.Net Core 2中,project.json文件不再存在。但是,我确实使用以下步骤解决了这个问题。
1)我从现有项目中删除了所有nuget包。
2)我创建了一个单独的.net核心Web应用程序项目,目标是.net 4.61。这是为了获得默认的nuget包。
3)我编辑了临时项目的.csproj文件,复制了ItemGroup中的所有PackageReference节点,并将它们粘贴到我现有的项目.csproj文件中。
4)编辑TargetFramework节点(在PropertyGroup内)从“netstandard2”到“net461”
我有一些软件包更改,以跟踪和解决,但否则我能够运行。
我做到了这一点并且有效
删除
"Microsoft.NETCore.App": {
"version": "1.1.0",
"type": "platform"
}
来自project.json
然后用这个替换框架部分:
"frameworks": {
"net46": { }
},
然后恢复包。
编辑:现在已经过时了。
这里有很多相似的答案,但我没有看到一个我最终做的事情,所以我想留在这里以防万一其他人穿着同样的鞋子。
为了清楚起见,我的项目是一个控制台程序。因此,如果您尝试将此答案用于其他内容,您的里程可能会有所不同。
在.csproj
文件中,在<PropertyGroup></PropertyGroup>
标记内,修改<TargetFramework>
以反映以下内容:
<TargetFramework>net461</TargetFramework>
现在,在这个例子中,我使用的是v4.6.1。我只能假设您将在“net”这个词后插入您的版本,而没有句点。祝好运!
为了实现这一目标,您需要执行几个步骤。
<TargetFrameworks>netstandard2.0;netcoreapp2.0;net35;</TargetFrameworks>
<RuntimeIdentifiers>win7-x86;win7-x64</RuntimeIdentifiers> <EnableDefaultCompileItems>false</EnableDefaultCompileItems>
.dll
文件和Nuget包。.dll
添加到nuget并从nuget访问这些项目。尝试以上步骤。这应该工作。
在“卸载项目”之后的Visual Studio 2017(15.6.2)版本中,右键单击并选择“编辑<your project file>
”,我必须:
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
<TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>
<TargetPlatformVersion Condition=" '$(TargetPlatformVersion)' == '' ">10.0.16299.0</TargetPlatformVersion>
<TargetPlatformMinVersion>10.0.16299.0</TargetPlatformMinVersion>
<ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
我的.net标准项目相对简单,几乎没有Nuget包。我改变了
<TargetFramework>netstandard2.0</TargetFramework>
至
<TargetFramework>**net461**</TargetFramework>
在.csproj文件的PropertyGroup部分下,这对我来说很有帮助..感谢Brandon Barkley在评论中的回答。
在csproj中添加以下内容
<PropertyGroup>
<TargetFrameworks>netcoreapp2.1;net471</TargetFrameworks>
</PropertyGroup>