【发布时间】:2017-06-01 16:59:31
【问题描述】:
我正在使用随 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: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 文件工作的新方式 (https://docs.nuget.org/ndocs/schema/msbuild-targets#pack-target)
文件的一些相关内容如下所示:
<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>
【问题讨论】:
-
程序集“lib\MyLibrary.dll”直接放在“lib”文件夹下。建议将程序集放在特定于框架的文件夹中。 你试过了吗?
-
我使用 dotnet build /t:pack /p:Configuration=Release /p:IncludeSymbols=true mylibrary.csproj,它按预期工作。
标签: c# visual-studio msbuild .net-core visual-studio-2017