我想使用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#的.NET代码
- 15. 从C#代码调用Babel .Net混淆器代码
- 16. 在C#代码中调用C++ dll代码
- 17. C# - 从.NET DLL(类库)执行代码而不引用它?
- 18. 从C#调用C++代码而不创建dll?
- 19. 从C#windows服务调用C++ dll(非托管代码)
- 20. 从C#代码中调用C++ native native dll
- 21. 从普通c代码中调用C++ activex dll
- 22. 从Visual C++调用C#代码
- 23. 从C#调用C++代码#
- 24. 从C++调用c代码
- 25. 从NSIS调用.net dll
- 26. 从C#调用C++代码时System.EntryPointNotFoundException
- 27. 调试托管的.NET代码从非托管C++调用
- 28. 如何从vbScript调用.NET代码(C#/ vb.net)?
- 29. 从C/C++调用Scala代码
- 30. 如何从C#代码调用非托管dll中的函数?
为什么你不能使用引用?我们在我们的TFS中有一个Assemblies文件夹,我们从该文件夹中添加对DLL的引用。在每次检查该DLL的解决方案时,我们都注意我们将新的DLL检入到Assemblies文件夹中。 – Bikonja