我想使用tfs從csharp代碼調用一些.net DLL。問題是我無法將這些DLL的引用直接添加到我的解決方案中,因爲我需要一個獨立的解決方案。這是因爲被調用的DLL經常變化,並且新的DLL也被添加進來。那麼我如何使用TFS通過代碼來調用它們。從C#代碼調用.net DLL的
回答
是否從VS項目創建這些其他DLL?如果我這樣做,我會將項目添加到單個解決方案中,然後將引用添加到依賴項目中,而不是直接添加到輸出DLL。
是的,他們只在VS中創建。但我需要在不添加任何參考的情況下調用它們 – user1706187
我正在使用批處理文件來實現此目的,但批處理文件執行不受控制,因此尋找更好的方法 – user1706187
不知道爲什麼你會使用沒有引用的dll,但對我來說,它聽起來有點像你需要使用反射。我在項目中使用的另一種方法是淨的外接程序選項: 微軟官方解釋:http://msdn.microsoft.com/en-us/library/bb384200(v=vs.90).aspx 從CodeProject,這是非常有益的,我舉個例子:http://www.codeproject.com/Articles/25866/AddIn-Enabled-Applications
可能有助於瞭解更多有關該問題的原因你不會參考dll。
我不確定在哪TFS會進來,但你要找的是System.Reflection。有將在
http://www.codeproject.com/Articles/32828/Using-Reflection-to-load-unreferenced-assemblies-a
攤開來給你。如果我理解正確的文章,這或多或少是你所需要的:
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);
}
按照一貫的動力學(或反射)你把你寫的東西,因爲所有的錯誤會在運行時被陶醉全部責任。
- 1. 從C#調用C dll代碼?
- 2. 調用C#的.dll ++代碼
- 3. 從C#調用delphi DLL函數代碼
- 4. 從C#代碼調用delphi DLL方法
- 5. 調用C/C++代碼從C#.NET應用程序
- 6. 從.Net調用FoxPro代碼
- 7. 從使用.NET代碼的C++/CLI DLL導出C函數
- 8. C#.NET調用C++ DLL
- 9. 在從C#代碼調用dll函數時出錯代碼
- 10. 從本機C++調用.NET dll
- 11. C#代碼中調用C函數從dll後的ArithmeticException
- 12. 如何從C代碼調用C#DLL中的方法?
- 13. 從C調用fortran代碼#
- 14. 從C#代碼調用Babel .Net混淆器代碼
- 15. C# - 從.NET DLL(類庫)執行代碼而不引用它?
- 16. 在C#代碼中調用C++ dll代碼
- 17. 從普通c代碼中調用C++ activex dll
- 18. 從C#windows服務調用C++ dll(非託管代碼)
- 19. 從C#代碼中調用C++ native native dll
- 20. 從C#調用C++代碼而不創建dll?
- 21. 從NSIS調用.net dll
- 22. 從Visual C++調用C#代碼
- 23. 從C++調用c代碼
- 24. 從C#調用C++代碼時System.EntryPointNotFoundException
- 25. 調試託管的.NET代碼從非託管C++調用
- 26. 如何從vbScript調用.NET代碼(C#/ vb.net)?
- 27. 從C/C++調用Scala代碼
- 28. 從MC++代碼中的C#DLL調用函數
- 29. x64從x64調用的C++ DLL託管代碼
- 30. 如何從C#代碼調用非託管dll中的函數?
爲什麼你不能使用引用?我們在我們的TFS中有一個Assemblies文件夾,我們從該文件夾中添加對DLL的引用。在每次檢查該DLL的解決方案時,我們都注意我們將新的DLL檢入到Assemblies文件夾中。 – Bikonja