6

[既存のアイテムの追加] ダイアログの [リンクとして追加] オプションを使用して、別の Visual Studio 2012 プロジェクトから現在のプロジェクトにファイルを追加すると、. ファイル リンクは適切に作成されており、すべて問題ありません。

同じVS2012 プロジェクト (ただし、別のフォルダーにある)内の既存のファイルに対して同じトリックを繰り返すと、リンクは作成されません。Visual Studio はアクションを無視します。なぜこれが不可能なのですか?これに対する回避策はありますか?同じプロジェクト内のファイルにファイル リンクを追加できますか?

背景情報: NuGet パッケージとその更新メカニズムを使用したいのですが、NuGet は、使用したくないフォルダー構造 ('Scripts' フォルダーや 'Content' フォルダーなど) にすべてをダンプするだけです。外部のものには「libs」フォルダーを使用します。しかし、NuGet でインポートしたファイルを移動すると、更新メカニズムが壊れるので、「Scripts」フォルダーなどにあるインポートされたファイルへのファイル リンク (libs フォルダーの下) を作成したいと考えています。

.csproj ファイルを手動で編集しようとしましたが、リンク定義はまだ無視されます。私が考えることができる唯一の解決策は、NuGet パッケージ専用の別のプロジェクトを作成し、インポートしたファイルへのリンクを他のプロジェクトに追加することですが、それは少しやり過ぎのように思えます。

4

3 に答える 3

3

これは不可能です。

csproj ファイルは単なる msbuild ファイルであり、ビルド プロセスにプロジェクトを構成するファイルと参照、およびビルドに関して何を行うかなどを伝えます。

csproj ファイルがどのようにまとめられているかを見ると、ItemGroup 要素があることがわかります。これらの ItemGroup 要素の機能の 1 つは、ファイルをグループ化することです。「ファイル グループ」では、各項目 (Compile または None などとマークされているかどうかに関係なく) は、Include 属性 (例: Include="filename.ext") を持つファイルを参照します。ファイルをソリューションに追加すると、これらの要素の 1 つが作成され、Include 属性がプロジェクトに関連するファイルのパスに適切に設定されます。ただし、その前に、一致するパスを持つファイルが既にプロジェクトにあるかどうかを確認し、存在する場合は無視します。

ご覧のとおり、あなたがやろうとしているのは重複ファイルを追加することですが、VS はそれを許可していません。

- 編集 -

さて、回避策について。シンボリックリンクを使用する場合、これを行うことができます。コマンド ウィンドウで、次のコマンドを入力します。

mklink Link Target

ここで、Link は新しいシンボリック リンク名を指定し、Target は新しいリンクが参照するパス (相対または絶対) を指定します。

その後、必要に応じてファイルをプロジェクトに追加できるはずです。

于 2014-01-30T12:31:51.963 に答える
-1

Visual Studio はハードリンクとソフトリンクに対応していません

于 2014-09-06T23:39:00.580 に答える