LoginSignup
2
4

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-11-27

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
>

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

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4