Webサイトの公開ツール を使用してASP.NET Webサイトプロジェクトを公開しようとしていますが、次のエラーが発生します。
ASPNETCOMPILER(0,0):エラーASPRUNTIME:指定されたパス、ファイル名、またはその両方が長すぎます。完全修飾ファイル名は260文字未満である必要があり、ディレクトリ名は248文字未満である必要があります。
AppDataの非常に長いパスにファイルをコピーしようとしていることがわかります。
Copying all files to temporary location below for package/publish:
C:\Users\imx0\AppData\Local\Temp\1\WebSitePublish\BMW.Web-424993535\obj\Debug\AspnetCompileMerge\Source.
c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -v /BMW.Web -p C:\Users\imx0\AppData\Local\Temp\1\WebSitePublish\BMW.Web-424993535\obj\Debug\AspnetCompileMerge\Source C:\Users\imx0\AppData\Local\Temp\1\WebSitePublish\BMW.Web-424993535\obj\Debug\AspnetCompileMerge\TempBuildDir
.pubxmlパブリッシュプロファイルでこの一時ディレクトリについて何も見つかりませんでした。 Visual Studioがファイルをコピーする一時ディレクトリを変更するにはどうすればよいですか?
これをパブリッシュプロファイルに追加して、package/publishの一時ディレクトリを変更します。
<AspnetCompileMergeIntermediateOutputPath>c:\shortPath\</AspnetCompileMergeIntermediateOutputPath>
<AspnetCompileMergeIntermediateOutputPath>c:\shortPath\</AspnetCompileMergeIntermediateOutputPath>
下 <PropertyGroup>
鬼ごっここれは余談ですが、nodeJSとgulpに依存するソリューションをMSBuildしようとしたときにこの問題に遭遇しました。問題は、gulp依存関係ツリーが非常に深くなり、aspnet_compilerがそのツリーをより深いディレクトリにコピーしようとしたため、このエラーが発生したことです。ここに記載されているすべてを試しましたが、何もうまくいきませんでした。
それが起こったので、私はTFSで構築していたので、私の解決策はattrib +h node_modules\* /S /D
msbuildの前にディレクトリツリーを非表示にしてからattrib +h node_modules\* /S /D
。それは私のためにそれをしました。
この状況でコンパイラーによってスローされたエラーが書き込みの失敗の原因となったパスを明らかにした場合は、間違いなくいいでしょう...
他の答えはどれもうまくいきませんでした。
Visual Studio 2013 Community Edition。
TMPおよびTEMP環境変数を短いフォルダー名に変更したところ、うまくいきました。
これを追加してみてください
<IntermediateOutputPath>..\Temp</IntermediateOutputPath>
デフォルトの<propertyGroup />
node_modules
の内容が*.csproj
ファイル自体ではなく、どちらのバージョン管理にも含まれていなかったとしても、node_modules
フォルダ全体を削除するとうまくいきました。
私にとって、Visual Studio 2019を使用して、機能したパブリッシュプロファイルの.pubxmlファイルに対する唯一の変更は次のとおりでした。
<WPPAllFilesInSingleFolder>c:\shortPath\</WPPAllFilesInSingleFolder>
Microsoft.Web.Publishing.targetsファイルの484行目でこのプロパティを発見しました。フルパスはC:\ Program Files(x86)\ Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\VisualStudio\v16.0\Webでした。
このソリューションを使用して長いファイル/フォルダーを特定し、そこから問題を修正しました:
dir /s /b | sort /r /+261 > out.txt
すべてのファイルパスをout.txtファイルに出力します=LEN(A1)
「A1」はセルです。これをすべてのファイルの長さに対してコピーして、パスの長さを確認しますこれは少し時間がかかることを知っていますが、この問題の原因となっているファイルがいくつかある場合は、それらすべてを表示できます。
長いファイルパスの問題を修正するために選択したソリューションを試すことができます。
それでも他の問題が原因で公開できない場合は、以下の方法をお試しください。
=> 'Solution Configuration'が 'Debug'モードの場合は、同じ設定を 'Release 'モードでファイルを公開します。
=>ソリューション構成がリリースモードであり、問題が解決しない場合は、前に生成されたdllを削除してみてください 'Release' folder私たちのプロジェクトで、プロジェクトをもう一度公開します。
上記の方法のいずれかで問題が解決します。