我有一个在VS 2015中创建的共享库项目,目标是".NETStardard1.4"(无法升级,因为需要支持Win10 UWP(。
VS2017导入和构建这些都很好。
然而,.NET核心命令行dotnet build
表示The imported project "C:Program Filesdotnetsdk2.0.0MicrosoftPortablev5.0Microsoft.Portable.CSharp.targets" was not found
我使用VS2017创建了一个新的.NET Stardard 1.4类库项目。.vcproj文件的内容完全不同,例如,第一行说<Project Sdk="Microsoft.NET.Sdk">
,而对于VS2015创建的项目,它说<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
。命令行dotnet build
构建了VS2017创建的项目。
问题是,如何将我的.NET Stardard 1.4项目从VS2015转换为VS2017(保留运行时版本(,以启用这些命令行.NET Core构建工具?
IIRC,Microsoft.Portable.CSharp.targets
用于PCL项目。PCL项目中对.NET Standard的支持已被弃用。
在VS 2017中使用新项目系统的一个简单的.NET Standard 1.4项目如下所示:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard1.4</TargetFramework>
</PropertyGroup>
</Project>
请注意,CPS具有文件globbing功能,roslyn项目系统会自动将所有.cs
文件包括为Compile
,将.resx
包含为EmbeddedResource
。
CsprojToVs2017将现有的csproj转换为新格式,缩短了项目文件,并使用了Visual Studio 2017中所有漂亮的新功能。假设你安装了.NET Core 2.1+,你可以在命令行上运行:
> dotnet tool install --global Project2015To2017.Migrate2017.Tool
这将安装该工具,以便您在任何您想要的地方使用它。然后,您可以调用该工具,如下例所示。
> dotnet migrate-2017 wizard "D:PathToMyTestProject.csproj"