web-dev-qa-db-ja.com

VS 2017 .Net Core2.0コンソールアプリケーションの公開に失敗

Visual Studio 2017 CommunityEditionを使用して.NetCore 2.0コンソールアプリケーションを公開しようとしましたが、常に失敗します(VS2017内で完全に実行されます)。

これは私のCSPROJです:

<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
  <OutputType>Exe</OutputType>
  <RuntimeIdentifiers>win10-x64;osx.10.11-x64</RuntimeIdentifiers>
  <TargetFramework>netcoreapp2.0</TargetFramework>
  <ApplicationIcon />
  <StartupObject />
</PropertyGroup>

<ItemGroup>
  <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.0.0" />
</ItemGroup>

<ItemGroup>
    <None Update="appsettings.json">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
</ItemGroup>

<ItemGroup>
  <Folder Include="Properties\PublishProfiles\" />
</ItemGroup>

<ItemGroup>
  <ProjectReference Include="..\SharedLib\SharedLib.csproj" />
</ItemGroup>

<ProjectExtensions>
  <VisualStudio>
    <UserProperties appsettings_1json__JSONSchema="http://json.schemastore.org/compilerconfig" />
  </VisualStudio>
</ProjectExtensions>

</Project>

これらは、私が作成した公開プロファイルのプロパティです。

Publish profile

[公開]をクリックすると、このエラーウィンドウが表示されます。

Publish Fail Window

そして、以下はそれによって生成された素晴らしくて本当に役立つ「診断ログ」です。

System.AggregateException: One or more errors occurred. ---> System.Exception: Publishing failed.
   --- End of inner exception stack trace ---
   at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
   at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
   at Microsoft.VisualStudio.ApplicationCapabilities.Publish.Model.DefaultPublishSteps.<>c__DisplayClass22_0.<IsBuildCompletedSuccessfully>b__1()
   at System.Threading.Tasks.Task`1.InnerInvoke()
   at System.Threading.Tasks.Task.Execute()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.VisualStudio.ApplicationCapabilities.Publish.Model.DefaultPublishSteps.<DefaultCorePublishStep>d__19.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.VisualStudio.ApplicationCapabilities.Publish.ViewModel.ProfileSelectorViewModel.<RunPublishTaskAsync>d__108.MoveNext()
---> (Inner Exception #0) System.Exception: Publishing failed.<---

===================

これらは私がすでに試したもので、うまくいきませんでした。

  • プロジェクトをクリーンアップして再構築します。
  • VS2017キャッシュファイルと一時ファイルを削除します。
  • 公開のターゲットの場所を変更します。
  • VS2017を最新バージョンに更新して再起動します。

誰かがこれを手伝ってくれませんか?


[更新](回避策):

dotnet CLIを使用して公開作業を行いました。 プロジェクトルートパスcmd(Windows PowerShellも機能します)を開きます)そして、次のコマンドを実行します。

dotnet publish -c Release -r win10-x64

これにより、次のパスbin\Release\netcoreapp2.0\win10-x64\publish内に公開フォルダーが作成され、そこに.exeファイルがあります。 。

ただし、Visual Studio 2017を介して公開するとエラーが発生します。コマンドラインから作成する時間を無駄にしないため、VSを使用して公開することをお勧めします。

13

このページ によると、OSX(現在はMacOS)の場合、

。NET Core 2.0以降のバージョン、最小バージョンはosx.10.12-x64

プロジェクトファイル内の次のことがいたずらを引き起こしている可能性があります。

<RuntimeIdentifiers>win10-x64;osx.10.11-x64</RuntimeIdentifiers>

私が理解していることから、OSXバージョンは.NET Core 2.0をサポートするには古すぎるはずです(/サポートされていますか?)。

しかし、私が理解していないのは、(a)コマンドラインから実行した場合、および(b)新しい/他のバージョンのVisualStudioで機能する理由です。

2
Kjartan