2

GAC にある Visual Studio 2008 の Web プロジェクトへの参照を追加するたびに、参照が GAC 参照として追加され、ファイルが bin ディレクトリにコピーされません。しかし、展開の目的で、参照を非GAC参照として追加して、dllをbinディレクトリに追加したいと思います。リストウィンドウから選択するのではなく、参照ボタンを使用して参照を選択しようとしましたが、GAC 参照も追加されます。

これらの参照にはすべて .refresh ファイルが含まれており、ファイルのプロパティでローカルにコピーするオプションはありません。

何か助けてください?!?

4

8 に答える 8

4

参照を右クリックし、プロパティを選択し、Copy Local を False から True に切り替えます。

于 2008-12-22T19:25:20.887 に答える
2

クリス、あなたはおそらくこの問題をはるかに過ぎていますが、VS 2005 で同じことをしようとしたときにあなたの質問に出くわしました。

もちろん、Web プロジェクトでは、通常のプロジェクトのように参照に対してローカルにコピーするオプションが提供されないため、ローカルにコピー... ソリューションは初心者ではありません。

既存のファイルを Web アプリの bin ディレクトリに追加するだけで、この問題を回避しました。欠点は、更新参照が追加されないことです。そのため、外部ファイルを再構築する場合は、ローカル コピーを手動で更新する必要があります。

于 2009-12-02T16:08:08.740 に答える
1

他の誰かが言ったように、あなたはおそらくこの問題をずっと過ぎていますが、私は自分の解決策をミックスに投げ込むと思いました。

私の問題は少し異なっていました。ビルドサーバーが問題の.dllをサーバーにインストールせずにプロジェクトをコンパイルできるように、非GACバージョンの.dllが必要でした。

これを修正するために、.csproj(.vbproj)ファイルを手動で(メモ帳を使用して)編集し、ローカルバージョンを指すように参照ファイルを更新しました。これが将来厄介であることが判明した場合は、プロジェクトをアンインストールして.dllを使用する必要があります。

私の場合、次の行を変更しました。

<Reference Include="Microsoft.Data.Entity.CTP, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL" />

することが:

<Reference Include="Microsoft.Data.Entity.CTP, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\Lib\Microsoft.Data.Entity.CTP.dll</HintPath>
</Reference>

ここ..\Libで、はソリューションレベルのディレクトリで、プロジェクトファイルから1つ上のディレクトリです。

于 2010-08-09T22:38:46.400 に答える
1

これを実現するもう 1 つの方法は、XXX.dll.refresh フォルダーを手動で作成し、それらを bin ディレクトリに追加することです。

実際に小さなヘルパー プロジェクトを作成して、すべてのファイルを solution\Dependencies フォルダーに追加します。VB.NET には申し訳ありませんが、高速で、VS と同じように動作するようです。

    For Each fullFileName In Directory.GetFiles("..\..\..\Dependencies\", "*.DLL")
        Dim shortFileName = Path.GetFileName(fullFileName)
        Dim refreshFileName = shortFileName + ".refresh"

        Dim contents = "..\Dependencies\" + shortFileName

        File.WriteAllText(refreshFileName, contents)
    Next
于 2010-11-09T22:35:03.390 に答える
1

1)プロジェクトから GAC 参照を削除します

2) Visual Studio を閉じます

3) gacutil /uf [YourDllName] (gacutil.exe は「C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin」にあります)

4) VS を再度開き、[参照] タブ内に参照を追加すると、dll が bin フォルダーと .refresh ファイルにコピーされます (GAC への依存はなくなります) +++

于 2010-10-05T13:21:57.903 に答える
1

ローカルにコピーするように設定します

于 2008-12-22T19:25:32.340 に答える
0

.NET Framework の標準アセンブリを参照する場合、私が理解しているように、そのアセンブリのローカル コピーを作成することはできません。唯一の方法は、ターゲット コンピューターにフレームワークをインストールすることです。

サードパーティのアセンブリである場合は、アセンブリが配置されているディレクトリから bin ディレクトリに手動でコピーできます。

また、Windows SDK で gacutil.exe を使用して GAC からアセンブリを削除し、[参照] タブで参照を追加しようとするとどうなるかを確認することもできます。

于 2008-12-22T20:16:22.300 に答える
0

この問題を解決するために何時間も費やしたところ、Visual Studio を管理者として開くようにという投稿に出くわしました。それは問題を解決しました。参照されているすべての dll が bin フォルダーに追加されました。

于 2013-04-20T09:13:04.043 に答える