.NET Core 构建配置文件从 project.json 到 .csproj

时间:2023-03-09 03:39:25
.NET Core 构建配置文件从 project.json 到 .csproj

从 .NET Core SDK 1.0 Preview 3 build 004056 开始,.NET Core 弃用 project.json,回归 .csproj,主要原因是为了兼容 MSBuild ,详见 Announcing .NET Core Tools MSBuild “alpha”

如果你安装了 .NET Command Line Tools (1.0.0-preview3-004056) ,运行 dotnet new 不会创建 project.json 文件,取而代之的是 .csproj 文件,文件内容如下:

<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" /> <PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp1.0</TargetFramework>
</PropertyGroup> <ItemGroup>
<Compile Include="**\*.cs" />
<EmbeddedResource Include="**\*.resx" />
</ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.NETCore.App">
<Version>1.0.1</Version>
</PackageReference>
<PackageReference Include="Microsoft.NET.Sdk">
<Version>1.0.0-alpha-20161104-2</Version>
<PrivateAssets>All</PrivateAssets>
</PackageReference>
</ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

dotnet restore, dotnet build, dotnet publish, dotnet run 都会使用这个 .csproj 文件,不再支持 project.json 。

用 Visual Studio for Mac 创建的 .NET Core 项目也是只有 .csproj ,没有 project.json 。

用 Visual Studio 2017 RC 创建的 .NET Core 项目也是只有 .csproj ,没有 project.json 。

将 project.json 转换为 .csproj 有2种方法:

1)在 project.json 所在的项目文件夹,运行 dotnet migrate 命令。

2)用 Visual Studio 2017 RC 打开现有的 .sln ,VS2017 会自动帮您转换(实测发现VS2017的自动转换有些不靠谱,还是dotnet migrate命令靠谱)。

目前 Visual Studio 2015 不支持 .NET Core 的 .csproj 。