0

tfs を使用して、csharp コードからいくつかの .net DLL を呼び出したいと考えています。問題は、これらの DLL の参照をソリューションに直接追加できないことです。これには独立したソリューションが必要です。これは、呼び出される DLL が頻繁に変更され、その中に新しい DLL も追加されるためです。では、TFS を使用してコードからそれらを呼び出すにはどうすればよいでしょうか。

4

4 に答える 4

1

TFS がどこに入るかはわかりませんが、探しているのは System.Reflection です。あなたのためにそれをレイアウトする記事があります

http://www.codeproject.com/Articles/32828/Using-Reflection-to-load-unreferenced-assemblies-a

于 2012-12-03T15:54:05.190 に答える
0

参照されていないdllを使用する理由はわかりませんが、私にとっては、リフレクションを使用する必要があるように思えます。私がプロジェクトで使用したもう1つのアプローチは、.Netのアドインオプションでした。Microsoftの公式説明:http : //msdn.microsoft.com/en-us/library/bb384200(v = vs.90).aspxCodeprojectの例、これは私にとって非常に役に立ちました:http: //www.codeproject.com/Articles/25866/AddIn-Enabled-Applications

dllを参照しない理由について詳しく知ると役立つ場合があります。

于 2012-12-03T09:05:23.243 に答える
0

これらの他の DLL は VS プロジェクトから作成されていますか? これを行う場合、プロジェクトを 1 つのソリューションに追加してから、出力 DLL を直接参照するのではなく、依存プロジェクトへの参照を追加します。

于 2012-12-03T07:51:23.127 に答える
0

私があなたを正しく理解していれば、これは多かれ少なかれあなたが必要とするものです:

private void LoadUpdatedAssembly()
{
    var versionControlServer = _tfs.GetService<VersionControlServer>();
    var tempFilePath = Path.GetTempFileName();
    if (File.Exists(tempFilePath))
    {
        File.SetAttributes(tempFilePath, FileAttributes.Normal);
        File.Delete(tempFilePath);
    }
    versionControlServer.DownloadFile(@"$/<TeamProject>/<SourceControlFilePath>.dll", tempFilePath);
    var assembly = Assembly.LoadFrom(tempFilePath);
    AppDomain.CurrentDomain.Load(assembly.GetName());
}

そして、「ダイナミクス」で最も簡単にアクセスできます。

static void UseDynamicallyLoadedAssembly()
{
    dynamic dynamicExampleClass  = new ClassInAssembly();
    dynamicExampleClass.MethodOfTheClassInTheAssembly (10, 4);
}  

ダイナミクス (またはリフレクション) の場合と同様に、すべてのエラーは実行時に明らかになるため、記述内容については完全に責任を負います。

于 2012-12-04T11:09:12.533 に答える