C# 如何使用MSBuild 15打包多目标包?
我正在使用VS2017 RC发布的新MSBuild 15编译和打包一个多目标项目 还原:C# 如何使用MSBuild 15打包多目标包?,c#,visual-studio,msbuild,.net-core,visual-studio-2017,C#,Visual Studio,Msbuild,.net Core,Visual Studio 2017,我正在使用VS2017 RC发布的新MSBuild 15编译和打包一个多目标项目 还原:msbuild/t:restore mysolution.sln工作正常 生成:msbuild/p:Configuration=Release mylibrary.csproj正常工作并生成: + bin/Release + netstandard1.4 - mylibrary.dll + net452 - mylibrary.dll 但是当我打包时:msbuild/t:pack/p
msbuild/t:restore mysolution.sln
工作正常
生成:msbuild/p:Configuration=Release mylibrary.csproj
正常工作并生成:
+ bin/Release
+ netstandard1.4
- mylibrary.dll
+ net452
- mylibrary.dll
但是当我打包时:msbuild/t:pack/p:Configuration=Release/p:IncludeSymbols=true mylibrary.csproj
结构与以前的版本不匹配,如下所示:
+ bin/Release
+ netstandard1.4
- mylibrary.pdb
+ net452
- mylibrary.pdb
- mylibrary.dll
/t:pack
命令中的警告告诉我这会发生,但不确定如何解决:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Sdks\NuGet.Build.Tasks.Pack\buildCrossTargeting\NuGet.Build.Tasks.Pack.targets(73,5): warning : Issue found with package 'MyLibrary'. [D:\XXX\YYY\src\MyLibrary\MyLibrary.csproj]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Sdks\NuGet.Build.Tasks.Pack\buildCrossTargeting\NuGet.Build.Tasks.Pack.targets(73,5): warning : Issue: Assembly not inside a framework folder. D:\XXX\YYY\src\MyLibrary\MyLibrary.csproj]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Sdks\NuGet.Build.Tasks.Pack\buildCrossTargeting\NuGet.Build.Tasks.Pack.targets(73,5): warning : Description: The assembly 'lib\MyLibrary.dll' is placed directly under 'lib' folder. It is recommended that assemblies be placed inside a framework-specific folder.
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Sdks\NuGet.Build.Tasks.Pack\buildCrossTargeting\NuGet.Build.Tasks.Pack.targets(73,5): warning : Solution: Move it into a framework-specific folder. If this assembly is targeted for multiple frameworks, ignore this warning.
注:
我没有使用*.nuspec
文件。只是新的方式*.csproj
文件工作()
文件的某些相关内容如下所示:
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<OutputType>library</OutputType>
<TargetFrameworks>netstandard1.4;net452</TargetFrameworks>
<AssemblyName>MyLibrary</AssemblyName>
<Authors>XXX</Authors>
<Description>YYY</Description>
<PackageId>MyLibrary</PackageId>
<PackageVersion>1.2.3</PackageVersion>
</PropertyGroup>
</Project>
图书馆
netstandard1.4;net452
我的图书馆
XXX
YYY
我的图书馆
1.2.3
谢谢您的评论。我是根据他们找到我的路的
这就是我所做的:我再次下载了dotnet
cli工具,并从头开始测试它。我意识到cli工具的版本是相同的,所以我开始比较里面的文件
错误的dotnet cli版本
不工作的版本包含以下文件:
+ dotnet
+ sdk
+ 1.0.0-preview2-1-003177
+ 1.0.0-preview2-003131
+ 1.0.0-preview2-003133
+ 1.0.0-preview4-004233
使用dotnet build/t:pack/p:Configuration=Release/p:IncludeSymbols=true mylibrary.csproj
显示以下错误:
Couldn't find 'project.json' in '/t:pack'
良好的dotnetcli版本
我下载的第二个版本仅包含以下内容:
+ dotnet
+ sdk
+ 1.0.0-preview4-004233
执行之前的命令时,它会正常工作:
Microsoft (R) Build Engine version 15.1.458.808
Copyright (C) Microsoft Corporation. All rights reserved.
...
程序集“lib\MyLibrary.dll”直接放置在“lib”文件夹下。建议将程序集放置在特定于框架的文件夹中。你试过了吗?我使用dotnet build/t:pack/p:Configuration=Release/p:IncludeSymbols=true mylibrary.csproj,它可以正常工作。