39

一部のファイルへの途方もなく長いパスを持つベンダーから Web サイト プロジェクトを公開しようとしています。発行時のエラーは次のとおりです。

The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.

パブリッシュすると、Visual Studio 2012 Update 3 が一時ディレクトリに書き込もうとしていて、プレフィックスが非常に長い:

 C:\Users\cuser\AppData\Local\Temp\WebSitePublish\MidasCMS400v9-1580334405\obj\Debug\Package\PackageTmp\

c:\temこのSOの回答に従うことで、VSを別の一時ディレクトリにリダイレクトできるかもしれないと思いました: Webサイトプロジェクトを公開するときの一時パスが長すぎます

WebPublishMethodパブリケーション プロファイルを作成しましたが、それを開くとすぐに、 がの要素ではないことを示すエラーが表示されますPropertyGroup。とにかく、ファイルを更新したので、次のようになります。

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>FileSystem</WebPublishMethod>
    <LastUsedBuildConfiguration>Debug</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish />
    <ExcludeApp_Data>False</ExcludeApp_Data>
    <publishUrl>C:\Sites\MidasPublish</publishUrl>
    <DeleteExistingFiles>False</DeleteExistingFiles>
    <AspnetCompileMergeIntermediateOutputPath>c:\tem\</AspnetCompileMergeIntermediateOutputPath>
  </PropertyGroup>
</Project>

公開しようとすると、「ファイルの変更が検出されました」というタイトルのモーダル ボックス ポップアップが表示され、「プロジェクト YourWebsite が環境外で変更されました」というメッセージが表示され、リロードするかどうか尋ねられます。私のエラー リストでは、c:\tem特定したディレクトリを使用しようとしていないため、パスが長すぎるというエラーが引き続き表示されます。

この血まみれのものをサーバーに配置する必要があります。私は、血まみれのものを公開できるようにするためのソリューションを用意しています。Web サイトのプロジェクト テンプレートについてよく知らないので、より良い方法があれば教えてください。

4

7 に答える 7

58

http://forums.asp.net/t/1944241.aspx?Website+publish+failing+due+to+file+path+being+too+longから

Web プロジェクト ファイルのデフォルトのPropertyGroupに次の行を追加します。

<IntermediateOutputPath>..\Temp\</IntermediateOutputPath>

上記のパスを C:\temp または ......\Temp にすることができます (必要に応じて、ドライブのルートにできるだけ近づけます。

私の場合、.csproj または .vbproj (Web サイト プロジェクト ファイル) はありませんでしたが、編集しないように警告する website.publishproj ファイルがありました。

于 2014-11-21T15:30:12.397 に答える
4

Stelvio のおかげで、 http: //visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2156195-fix-260-character-file-name-length-limitationから、解決策があります。

さて、260文字を超えるパスでの作業を許可する回避策を見つけました。

免責事項: このトリックは Windows 8 x64 と Visual Studio 2013 でのみ試しました

そのため、機能させるために、mklink コマンドを使用してフォルダーへのジャンクションを作成しました。

これが元のパスであると仮定します: d:\very\very\long\path\to\solution\folder、d:\short_path_to_solution_folder として短いリンクを取得できます。管理者として DOS シェルからこのコマンドを起動するだけです: mklink /J d :\short_path_to_solution_folder d:\very\very\long\path\to\solution\folder

ソースと宛先のパスを必要に応じて変更します

よろしくお願いします!ステルヴィオ

このリンクから: http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2156195-fix-260-character-file-name-length-limitation

于 2015-05-08T06:51:54.013 に答える
0

Jason Beck の答えは、小さな変更でうまくいきました。「IntermediateOutputPath は末尾のスラッシュで終了する必要があります」というエラーを回避するには。パスの最後に「\」を使用します: ..\Temp\

「CONFIG_PUBLISH_FILE.pubxml」は次のようになります (「...」は、ファイルに含まれる他の構成を省略します): ... ... ..\Temp\ ...

于 2015-12-20T17:53:03.423 に答える
0

プロジェクトの発行時に、Visual Studio コンパイラはプロジェクトの一部であるファイルのサイズをチェックします。

そこで、ファイル内の長い名前を検索しました。これらのファイルを見つけて名前を変更しました。

完璧に機能しました

于 2017-05-05T16:42:15.637 に答える
0

私の場合は、Windows のデフォルトの従来の文字列の長さ制限が原因でした。これはまだ 256 文字の制限に設定されていました。

これを修正するために、管理者の powershell セッションから次のコマンドを実行しました

New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" `
-Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force

変更を有効にするには、システムを再起動する必要がありました。

Microsoft リファレンス ドキュメントのリンクはこちら

于 2021-12-24T17:38:12.763 に答える
-4

このエラーは、長いパス名が原因で発生します....U は、現在の場所から D ドライブまたは F ドライブにフォルダーを切り取っただけです。プロジェクトのフォルダ名を「myproject」とすると、このフォルダを切り取って F ドライブの D ドライブに貼り付けると、現在のパス名は D:\myproject または F:\myproject になります。その後、もう一度公開します......うまくいきます...

于 2014-07-25T06:05:56.687 に答える