1

Visual Studioを使用して、ユニットへの参照を常にロードおよび構築します(R:)。問題は、誰かがプロジェクトプロパティを編集すると、ドライブ文字がアセンブリパスから削除され、ビルドマシンがアプリケーションをビルドできないことです。

作成時のプロジェクトファイルは次のようになります。

<References>
    <AssemblyReference
    RelativePath="R:\ClientContext.dll"
    AssemblyName="ClientContext, Version=8.3.0.0, PublicKeyToken=255e4d2a8e3ef422, processorArchitecture=MSIL"
    MinFrameworkVersion="131072"
    />

そして、プロパティを編集した後:

<References>
    <AssemblyReference
    RelativePath="ClientContext.dll"
    AssemblyName="ClientContext, Version=8.3.0.0, PublicKeyToken=255e4d2a8e3ef422, processorArchitecture=MSIL"
    MinFrameworkVersion="131072"
    />

プロジェクトファイルはvcprojであり、これが他の形式でも発生するかどうかはわかりません。

事前に仲間に感謝します。

4

3 に答える 3

3

他の人が述べているように、根本的な問題は、IDEが参照用の相対パスを必要としていることです。これにより、マシンのセットアップが大きく異なる可能性のある複数の開発者間でプロジェクト/ソリューションを共有することがはるかに簡単になります。

編集

ハンスが指摘したように、この質問は、プロジェクトファイルのHintPathの概念をサポートしていないC++に関するものです。C#、VB.Net、またはF#ユーザーが質問に遭遇した場合に備えて立ち去る

これを回避する1つの方法は、リファレンスでHintPathサブノードを使用することです。これにより、IDEは、相対パスを解決するときにどこを見ればよいかを知ることができます。

<References> 
    <AssemblyReference 
      RelativePath="ClientContext.dll" 
      AssemblyName="ClientContext, Version=8.3.0.0, PublicKeyToken=255e4d2a8e3ef422, processorArchitecture=MSIL" 
      MinFrameworkVersion="131072">
        <HintPath>R:\ClientContext.dll</HintPath>
    </AssemblyReference>
于 2010-10-14T15:12:00.820 に答える
1

絶対パスは非常に脆弱であるため、IDEは相対パスを非常に気に入っています。R:ドライブが適切にマップされていない場合も、ビルドが壊れます。ただし、修正可能です:プロジェクト+プロパティ、共通プロパティ、フレームワーク、および参照。R:\パスを[追加の参照検索パス]リストに追加します。

于 2010-10-14T14:16:31.420 に答える
1

このページでは、いくつかの洞察が得られる場合があります。特に重要なのは、「RelativePath」設定に関するコメントです。「RelativePath-プロジェクトディレクトリから参照されるアセンブリまでの相対パスを表示します。」 http://msdn.microsoft.com/en-us/library/47w1hdab.aspx

問題は、プロジェクトに関連するように常にリセットされることです。

于 2010-10-14T13:39:20.657 に答える