Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用MSBuild 15打包多目标包?_C#_Visual Studio_Msbuild_.net Core_Visual Studio 2017 - Fatal编程技术网

C# 如何使用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

我正在使用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
文件工作()

文件的某些相关内容如下所示:

<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,它可以正常工作。