Help us understand the problem. What is going on with this article?

asp.net > core > コンソールアプリをWindowsServerで動作エラー

More than 3 years have passed since last update.

AutoMapperを使用したアプリをWindows Serverに配置して実行しようとしましたが以下のようなエラーが出て困りました。

ビルド(publish)

.net coreではexeファイルを作るのではなくて、publishでdllを作成してdotnetコマンドで動作させるようです。
.NET Core Application Deployment | Microsoft Docs

dotnet publish command - .NET Core CLI | Microsoft Docs

実際にpublish

VisualStudioの発行コマンドでやってもうまくいかなかったので、コマンドラインでやりました。

プロジェクトファイル(*.csproj)が存在するフォルダにて、以下コマンドを実行
>dotnet publish -c Release -r win-x64

以下のフォルダに一式できますのでフォルダ毎サーバーの実行したいフォルダにコピーします。
\bin\Release\netcoreapp2.0

サーバーで実行します。

win-x64> dotnet appname.dll

Error:
  An assembly specified in the application dependencies manifest (FeedReader.dep
s.json) was not found:
    package: 'AutoMapper', version: '6.2.0'
    path: 'lib/netstandard1.3/AutoMapper.dll'

エラーが出ました。
AutoMapperが指定するパス’lib/netstandard1.3/’に無いとの事です。

散々探しましたが、ローカル開発マシンでは以下にAutoMapper.dllが存在し、ビルド時などはここを参照しているようでした。
C:\Users\UserName.nuget\packages\AutoMapper\6.2.0\lib\netstandard1.3\

サーバー上でも同じかと探しましたが、サーバー上にはありません。

↓のdeploymentの説明ページに目を戻すとSelf-contained deploymentがあり、必用な環境一式をpublishできるようです。
.NET Core Application Deployment | Microsoft Docs

↓の説明とオプションを良く見るとself-containedオプションが存在しました。
--self-contained
dotnet publish command - .NET Core CLI | Microsoft Docs

再publish

>dotnet publish -c Release -r win-x64 --self-contained

今度は、\bin\Release\netcoreapp2.0\win-x64\publish の下にファイル一式が作成されました。
ファイルもself-containedを付ける前よりも大分増えてます。

サーバーで動作

dotnet コマンドで実行

> win-x64> dotnet appname.dll
>

今度は問題なくサーバーで動作しました。

sugasaki
個人的なメモが多いです。 書いてる事は個人の見解であり所属する組織の公式見解ではありません
https://sugasaki.com/
runners
スポーツで世界を良くしたいエンジニアチーム。応援navi、.finisher、run&といった製品開発をしています!
https://www.wantedly.com/projects/167082
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away