質問

いい方法を乗り越え260文字制限は、MSBuildツールのビルVisual Studioプロジェクトとソリューションからのコマンドがかかってしまいます。いることができるように構築の自動化をCruiseControl(CruiseControl.NET なオプションところから始めるタイでは通常のantスクリプト)といった走りの問題の長さのパス。明らかにし、問題の長さのパスのジを参照させるソリューションファイルとして、ツールな崩壊経路の下に適切に:(

んでもってDevEnvるものが作時に例外がスローではないが良いの自動構築と別機です。ではないでくださいここを利用します。

ットにあるこのプロジェクトのビルドオンラインをVisual Studioに通常のバーコードを作成。

役に立ちましたか?

解決

MSBuildの制限のようです。私たちも同じ問題を抱えていましたが、最終的には、適切に機能する他のソリューションが見つからなかったため、パスを短くする必要がありました。

他のヒント

SUBSTコマンドはまだ存在しているため、ルートを再マッピングしますユダヒマンゴのソリューションが役に立たない場合、ビルドフォルダーをドライブ文字にすると、一部の文字が保存される可能性があります。

CSPROJファイルを調整することで同様の問題を解決しました:

<BaseIntermediateOutputPath>$([System.IO.Path]::GetFullPath('$(MSBuildProjectDirectory)\..\..\..\Intermediate\$(AssemblyName)_$(ProjectGuid)\'))</BaseIntermediateOutputPath>

コンパイルの結果、CSC.EXEは相対パスではなくフルパスを受け取ります。

CSC.EXEがパスでどのように動作するかの手がかりをharrydevに感謝します。

あの長経路問題の関係を築くことができました。一つはパスのなか長すぎますが、すでに多くの".."です。起される可能性があります。参照'HintPath値です。MSBuildは正常これらのパスを以下に、最大制限値ようです。

その他の種類のパスだ。申し訳ございません、あなたのことだけです。後から見るとイベントカレンダーの問題が付けられたというのに十分なAPIでサポートす。のBCLチームを深めることにより、ブログにもこういった課題です。のWin32APIを支援\?\ 形式です。任意のビルドツールがなければ、おそらく98%のアプリがない;かろう悪いと考えるすべてのバッファサイズのためのMAX_PATH).

いという結論を出したのである大きな生態系への長いパス、または窓が一部の工夫に持っているかのような短経路の難号化?) 長期パスだけでな可能MSBuildに対応しています。回避策などsubstは、ま;が合わない場合にはツリーでは、単に水深が深く、ごみのオプションを構築で断片、または短縮のためのフォルダ名です。います。

ダン/MSBuild

C#コンパイラ(csc.exe)が呼び出されると、プロジェクトディレクトリパスPROJECTDIRECTORYを出力パスOUTPUTPATHとともに使用するだけで、次のように追加するだけで問題になることがわかりました。

  

PROJECTDIRECTORY + OUTPUTPATH

ただし、OUTPUTPATHが相対的な場合、つまり&quot; .. \ .. \ Build \ ProjectName \ AnyCPU_Debug_Bin \&quot;プロジェクトディレクトリが非常に長い場合、パスは次のようになるため、合計の長さは259文字より長くなります。

  

PROJECTPATH +&quot; .. \ .. \ Build \ ProjectName \ AnyCPU_Debug_Bin \&quot;

絶対パスの代わりに。

Win32関数を呼び出す前にcsc.exeが絶対パスを作成する場合、これは機能します。この場合、絶対パスの長さは160文字未満です。

何らかの理由で、Visual Studioからのcsc.exeの呼び出しは、Visual Studioからの呼び出しとMSBuildとは異なります。理由はわかりません。

いずれにしても、PROJECTDIRECTORYおよび/またはOUTPUTPATHパスのいずれかまたは両方を変更することで問題を解決できます。

DOSパスを試しましたか?または\\?\プレフィックス? .NET BCLチームのブログに詳細があります。

パスの長さが260の場合、このエラーの259または261が発生しないため、参照を解決する警告があります。 msbuildのバグがあると思います。

すでに受け入れられた答えがあることは知っていますが、 msbuild を使用しているときに別の問題が発生し、同じエラー出力が返され、野生のガチョウの追跡に導かれました。それで、将来のグーグルのために、ここに行きます:

msbuild を呼び出すバッチファイルがありますが、ビルドマシンはVisual Studioの複数のバージョンをビルドできるため、各バッチファイルは実行前に vcvarsall.bat を呼び出します msbuild 。これには、同じもので完全に満たされたパスが何度も繰り返されるという厄介な副作用があります。いっぱいになると、上記の質問に示されているエラーが表示されます:入力行が長すぎます。単純なGoogle検索では、 msbuild

私の場合は、 cmd.exe のセッションを強制終了して再起動するだけで、環境変数がネイティブ状態に戻りました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top