web-dev-qa-db-ja.com

Webサイトプロジェクトを公開するときに一時パスが長すぎます

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がファイルをコピーする一時ディレクトリを変更するにはどうすればよいですか?

34
Britton

これをパブリッシュプロファイルに追加して、package/publishの一時ディレクトリを変更します。

<AspnetCompileMergeIntermediateOutputPath>c:\shortPath\</AspnetCompileMergeIntermediateOutputPath>
45
Britton
  1. Webプロジェクトフォルダーに移動し、Properties\PublishProfilesフォルダーに移動します。
  2. プロファイルファイルprofile_name.pubxmlを開きます(profile_name.pubxml.userではありません)
  3. コピー/過去<AspnetCompileMergeIntermediateOutputPath>c:\shortPath\</AspnetCompileMergeIntermediateOutputPath><PropertyGroup> 鬼ごっこ
  4. ファイルを保存すると、このプロファイルを使用してWebサイトを公開できます
13
Abdu

これは余談ですが、nodeJSとgulpに依存するソリューションをMSBuildしようとしたときにこの問題に遭遇しました。問題は、gulp依存関係ツリーが非常に深くなり、aspnet_compilerがそのツリーをより深いディレクトリにコピーしようとしたため、このエラーが発生したことです。ここに記載されているすべてを試しましたが、何もうまくいきませんでした。

それが起こったので、私はTFSで構築していたので、私の解決策はattrib +h node_modules\* /S /D msbuildの前にディレクトリツリーを非表示にしてからattrib +h node_modules\* /S /D。それは私のためにそれをしました。

この状況でコンパイラーによってスローされたエラーが書き込みの失敗の原因となったパスを明らかにした場合は、間違いなくいいでしょう...

12
Josh

他の答えはどれもうまくいきませんでした。

Visual Studio 2013 Community Edition。

TMPおよびTEMP環境変数を短いフォルダー名に変更したところ、うまくいきました。

6
Brian Lakstins

これを追加してみてください

<IntermediateOutputPath>..\Temp</IntermediateOutputPath>

デフォルトの<propertyGroup />

5
kennydust

node_modulesの内容が*.csprojファイル自体ではなく、どちらのバージョン管理にも含まれていなかったとしても、node_modulesフォルダ全体を削除するとうまくいきました。

1
matcheek

私にとって、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でした。

0
Mark Glasgow

このソリューションを使用して長いファイル/フォルダーを特定し、そこから問題を修正しました:

  1. コマンドプロンプトでこのスクリプトを実行します:dir /s /b | sort /r /+261 > out.txtすべてのファイルパスをout.txtファイルに出力します
  2. 出力をExcelファイルにコピーする
  3. 貼り付けた内容の次の列に、このExcel関数を追加します。=LEN(A1)「A1」はセルです。これをすべてのファイルの長さに対してコピーして、パスの長さを確認します
  4. パスの長さでExcelで並べ替え
  5. 推奨制限を超える長さを特定する

これは少し時間がかかることを知っていますが、この問題の原因となっているファイルがいくつかある場合は、それらすべてを表示できます。

0
Bern

長いファイルパスの問題を修正するために選択したソリューションを試すことができます。

それでも他の問題が原因で公開できない場合は、以下の方法をお試しください。

=> 'Solution Configuration'が 'Debug'モードの場合は、同じ設定を 'Release 'モードでファイルを公開します。

=>ソリューション構成がリリースモードであり、問​​題が解決しない場合は、前に生成されたdllを削除してみてください 'Release' folder私たちのプロジェクトで、プロジェクトをもう一度公開します。

上記の方法のいずれかで問題が解決します。

0