gpt4 book ai didi

c# - 我如何使用 MSBuild 15 打包多目标包?

转载 作者:太空狗 更新时间:2023-10-29 23:49:41 25 4
gpt4 key购买 nike

我正在使用随 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>

最佳答案

感谢您的评论。我在他们的基础上找到了自己的出路。

这就是我所做的:我再次下载了 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'

良好的 dotnet cli 版本

我下载的第二个版本只包含这些:

+ dotnet
+ sdk
+ 1.0.0-preview4-004233

并且执行之前的命令,它工作正常:

Microsoft (R) Build Engine version 15.1.458.808
Copyright (C) Microsoft Corporation. All rights reserved.

...

关于c# - 我如何使用 MSBuild 15 打包多目标包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41700385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com