2009-05-02 38 views
15

私は現在、中規模(15 ishプロジェクト)のVisual Studioソリューションを削除、リファクタリング、クリーンアップする処理中です。このソリューションには、C++とC#の両方のプロジェクトが含まれています。Visual StudioでC#プロジェクトの中間ディレクトリを移動

私は、出力の観点から、ソースコードから作成されたコンパイラとは別のものをできるだけ整然と保つことに熱心です。(大丈夫、ファイルを無視するように言うことができますが、怒っているから。

次のように私が達成したい出力は次のようになります。

SolutionDir/ 
SolutionDir/src/project1/{ Code here } 
SolutionDir/int/project1/configuration/{.obj files and other misc compiler junk here} 
SolutionDir/bin/project1/configuration/{The fun stuff goes here} 

あなたは、出力および中間体ディレクトリの両方を指定することができますので、これはC++のプロジェクトとの些細なようです。しかし、C#では、少なくともVisual Studio 2008のユーザーインターフェイスを通して、objディレクトリを移動することは不可能ですね。いくつかの掘削を行った後

、私はこれは一種の、動作しているように見えます

.csprojのC#に

<IntermediateOutputPath>..\..\int\ProjectName\Debug\</IntermediateOutputPath> 

を追加しました。中間体がそこに終わっているように見えますが、ディレクトリ 'obj'の下に設定ディレクトリ(例えば 'debug')が置かれ、古い場所に 'TempPE'ディレクトリが作成されます。

これは実際には大きな問題ではありませんが、この動作の原因を知り、可能であれば修正するのは良いことです。

ありがとうございます!

+6

私は大したことだと思いますが、MSはこれを修正する必要があります。 –

+0

[C#で中間出力ディレクトリを設定するには?](http://stackoverflow.com/questions/3311212/how-to-configure-intermediate-output-directory-in-c) –

答えて

2

私はこの問題の解決策を自分自身で探し求めており、あまり関心のないものを思いついた。 C#プロジェクトのビルド後のイベントに似たものを、この後

rmdir /S /Q %1obj 
SET %ERRORLEVEL%=0 

追加:

以下の内容で(私は私のプロジェクトパスに地雷を置く)どこかに「CleanSrcDir.bat」という名前のbatファイルを作成します。 :

$(ProjectDir)CleanSrcDir.bat $(ProjectDir) 

(これはもちろん、プロジェクトのディレクトリにbatファイルを置い前提としています。) 後に「常に」ビルド後の設定を変更し、あなたは完了です。

ちょっとハッキリですが、確かにバージョン管理の問題はなくなります。

1

無視したいディレクトリをSVN ignoreプロパティone-level-upに追加することをお勧めします。また、最初のコミットを行い、binディレクトリとobjeディレクトリを追加しないと、SVNクライアントはフリークしません。別の注意点として、生成されたファイルをプロジェクトのGeneratedFilesサブディレクトリに配置し、そのディレクトリをSVNにチェックインしないことをお勧めします。

+2

これは単なる回避策ですしかし、あなたが役に立つと思うかもしれません。 – GregC

+0

ありがとうございます - +1には十分に役立ちますが、まだ回答を受け入れるには十分ではありません;) –

8

あなたはその後、「OBJ」フォルダがデフォルトで作成されていない各ビルド構成に次の行の両方を追加し、ビルド後のアクションの必要がない場合:

<IntermediateOutputPath>Assembly\obj\Debug\</IntermediateOutputPath> 
<BaseIntermediateOutputPath>Assembly\obj\Debug\</BaseIntermediateOutputPath> 

SVN/SCC無視プロパティーも必要な場合に便利です

+0

とてもいいです!例外... VS2010 [迷惑TempPEフォルダを再作成します](http://connect.microsoft.com/VisualStudio/feedback/details/583689/temppe-folder-is-created-even-when-outputpath-intermediateoutputpath-and -baseintermediateoutputpath-are-set)... –

+0

VS2012にはこの問題はありません(迷惑TempPEフォルダの作成)。唯一の出力は指定されたbinとobjフォルダ – flipchart

+0

MSDN "IntermediateOutputPath"の "Common MSBuild Project Properties"のヘルプによれば... "このプロパティ(_IntermediateOutputPath_)がオーバーライドされると、BaseIntermediateOutputPathを設定しても効果はありません... " VS2010での私のテストから、これは本当であるようです。 http://msdn.microsoft.com/en-us/library/vstudio/bb629394(v=vs.110).aspx –

関連する問題