tfs を使用して、csharp コードからいくつかの .net DLL を呼び出したいと考えています。問題は、これらの DLL の参照をソリューションに直接追加できないことです。これには独立したソリューションが必要です。これは、呼び出される DLL が頻繁に変更され、その中に新しい DLL も追加されるためです。では、TFS を使用してコードからそれらを呼び出すにはどうすればよいでしょうか。
4 に答える
TFS がどこに入るかはわかりませんが、探しているのは System.Reflection です。あなたのためにそれをレイアウトする記事があります
http://www.codeproject.com/Articles/32828/Using-Reflection-to-load-unreferenced-assemblies-a
参照されていない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を参照しない理由について詳しく知ると役立つ場合があります。
これらの他の DLL は VS プロジェクトから作成されていますか? これを行う場合、プロジェクトを 1 つのソリューションに追加してから、出力 DLL を直接参照するのではなく、依存プロジェクトへの参照を追加します。
私があなたを正しく理解していれば、これは多かれ少なかれあなたが必要とするものです:
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);
}
ダイナミクス (またはリフレクション) の場合と同様に、すべてのエラーは実行時に明らかになるため、記述内容については完全に責任を負います。