奇妙な問題があります。
現在取り組んでいるアプリケーションの1つが、Azure Web Appへの発行後に機能しなくなりました。ローカルですべて正常に動作します。長い調査の結果、犯人は(VSTFSでの)ビルドによって生成されたweb.configに次のものが含まれていることです。
_<aspNetCore processPath=".\SomeServiceName.Api " stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
_
正しいものは次のとおりです:_<aspNetCore processPath=".\SomeServiceName.Api.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
_
不足している.exeに注意してください。
プロジェクトのビルド出力は、コンソールアプリケーションに設定されます。 ASP.NET Coreアプリであり、完全なフレームワークで実行されます。ビルドは、VSTSの_Visual Studio Build
_タスクを使用して、次のMSBuildArgumentsで実行されます。
/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)"
MSBuild CLIを使用して、同じコマンドライン引数で開発マシンでビルドを実行すると、次のようになります。
_<aspNetCore processPath="dotnet" arguments=".\SomeServiceName.Api.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
_
プロジェクトは_<Project Sdk="Microsoft.NET.Sdk.Web">
_を使用しています。
プロジェクトにweb.configを追加するだけで(現時点ではありません)、ソース管理で希望どおりの方法で制御できます。これにより、展開が壊れるという差し迫った問題が修正されます。しかし、私は知りたいです:
更新:
ここでつまずく人のために、githubの問題のリンクは次のとおりです: https://github.com/aspnet/websdk/issues/408
これは修正され、いつの日か一部のリリースの一部となるようです(ただし、リリースサイクルが何かはわかりません)。
まったく同じ問題があり、先週解決しました。 2つのASP.Net Coreプロジェクトがあり、1つは問題を示し、もう1つは問題がありませんでした。そこで、2つの.csprojファイルを比較しました。
今回のケースでは、削除する必要があるのは
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
.csprojのプロパティ。これが完了すると、MSBuildは、processPathの最後にある.exeを含むweb.configを正しく作成しました。
そこに.exeを取得するためのいくつかのオプション。これらの方法はそれぞれ私にとってうまくいきました:
ビルド構成をDebug
(デフォルト)からRelease
に切り替えます。
dotnet publish -c Release
またはmsbuild引数/p:Configuration=Release
プロジェクトのルートに好きな方法でweb.configを作成し、次の行をプロジェクトファイルに追加して、SDKに触れないように指示します。
<PropertyGroup> <IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled> </PropertyGroup>
https://docs.Microsoft.com/en-us/dotnet/core/rid-catalog にリストされているwin- *ランタイムの1つとしてターゲットランタイムを指定します。 exe拡張子を追加しているように見えるコードは次のとおりです。
まったく同じ問題があり、先週解決しました。 2つのASP.Net Coreプロジェクトがあり、1つは問題を示し、もう1つは問題がありませんでした。
最初にC:\ Program Files\dotnetパスを確認します。sdkフォルダーが使用できない場合は、asp.netコアsdkをインストールする必要があります。このパッケージをインストールすると、問題は解決します。アプリは<aspNetCore processPath="dotnet" arguments=".\yourapp.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout"/>
で実行されています