3

私はTFSプロジェクトに取り組んでおり、以前の開発者はbinobjフォルダーを含め、すべてをソース管理に含めていました。

binソリューションをビルドしようとすると、およびobjフォルダー内のすべてのファイルが読み取り専用としてロックされているため、いくつかのエラーが発生します。

制御できない理由により、これらのフォルダーはTFSで追跡する必要があります。これらのフォルダがロックされているためにプロジェクトをビルドしようとしてエラーが発生したときに発生する問題を他にどのように修正できますか?

これらのフォルダを毎回チェックアウトせずにソリューションを構築するにはどうすればよいですか?

4

4 に答える 4

9

objおよびbinフォルダーをソース管理に追加しないでください。それらを TFS から削除するには、Visual Studio でソース管理エクスプローラーを開き、フォルダーを右クリックして [削除] を選択します。

それらを削除できない場合は、TFS を制御できる人に依頼する必要があります。これらのフォルダーを TFS に追加する理由が見当たらないので、「制約」であってはなりません。

于 2012-10-12T13:04:58.703 に答える
4

前述のように、binフォルダーとobjフォルダーをソース管理に含める理由はありません。それらの内容は揮発性です。

ただし、実際にそれを制御できない場合は、適切なフォルダーとファイルを書き込み可能にして上書きできるようにするか、書き込み可能にした後でbinフォルダーとobjフォルダーを削除する必要があります。これは比較的簡単で、これを実現するにはいくつかの方法があり、適切なビルドのためにTFSBuild.projファイルを変更する必要があります。

特定のファイルを書き込み可能にするには、次を使用します。

<Attrib Files="[path to your file]" ReadOnly="False"></Attrib>

attribフォルダ全体の内容を書き込み可能にするには、バッチ処理を使用してファイルのリストを取得し、次のタスクを使用してファイルを繰り返し処理します。

<Target Name="MakeFilesWriteable">
    <Attrib Files="@(TargetFiles)" ReadOnly="false" />
</Target>

<ItemGroup>
    <TargetFiles Include="[path to bin folder]\**\*.*" />
</ItemGroup>

または、binフォルダーでDeleteを実行することもできます。

<RemoveDir Condition="Exists('[path to bin folder]')" Directories="[path to bin folder]" />

バッチ処理の例を除いて、これらのタスクBeforeCompileSolutionはビルドプロジェクトファイルのオーバーライドターゲット内に直接配置できます。バッチ処理の例では、単に呼び出しターゲットを実行します。使用する方法を選択すると、次のようにBeforeCompileSolutionなります。

<Target Name="BeforeCompileSolution" >
    <CallTarget Targets="MakeFilesWriteable" />

    <Attrib Files="[path to your file]" ReadOnly="False"></Attrib>

    <RemoveDir Condition="Exists('[path to bin folder]')" Directories="[path to bin folder]" />
</Target>
于 2012-10-14T01:45:29.073 に答える
2

PowerShell を使用して、bin および obj フォルダーを再帰的に削除できます。

Get-ChildItem .\ -include bin,obj -Recurse | foreach ($_) { remove-item $_.fullname -Force -Recurse }
于 2012-10-12T15:23:00.730 に答える
2

これは技術的ではない提案です。他の誰かがあなたのためにこの問題を作成したので、それを彼らの問題にしてください。彼らや他の重要な人に、あなたが構築することはできず、それは彼らがしたことのせいだと伝えてください. 彼らはビルドを壊しました。彼らはそれを修正する必要があります。ここで提案されている技術的な回避策はすべて優れていますが、実際の問題を回避しているだけです。

于 2014-02-24T14:18:17.033 に答える