C# Visual Studio生成目标

C# Visual Studio生成目标,c#,visual-studio,msbuild,build-process,C#,Visual Studio,Msbuild,Build Process,我有一个c#项目,包含一个图形用户界面。现在我们得到了第二个硬件后端。我们想要的是在编译项目之前决定后端使用哪个库,并更改用于后端处理的类。 我查看了msbuild,但不确定如何使用它实现它。有其他或更好的方法吗?依赖注入是正确的答案,正如Mike所说,在部署中包含适当的.dll来解析接口,这一点非常简单。不正确的方法是使用条件引用来调整.csproj,请参阅,但在您的情况下基于$(配置)值,这样您就可以切换到VS或CLI,这将起作用,但会带来痛苦。您不想在UI中这样做吗?您是否研究过任何依赖注

我有一个c#项目,包含一个图形用户界面。现在我们得到了第二个硬件后端。我们想要的是在编译项目之前决定后端使用哪个库,并更改用于后端处理的类。
我查看了msbuild,但不确定如何使用它实现它。有其他或更好的方法吗?

依赖注入是正确的答案,正如Mike所说,在部署中包含适当的.dll来解析接口,这一点非常简单。不正确的方法是使用条件引用来调整.csproj,请参阅,但在您的情况下基于$(配置)值,这样您就可以切换到VS或CLI,这将起作用,但会带来痛苦。

您不想在UI中这样做吗?您是否研究过任何依赖注入(控制反转)框架,如StructureMap?它们的全部目的是允许您通过配置更改正在使用的实现。因此,您不需要在编译时担心;在运行它之前,您需要更改它。我假设您正在为后端使用一个公共接口,以便在不更改代码的情况下轻松地在两者之间切换。这个想法是没有在您正在编译的计算机上安装所有必需的DLL。由于其中一个后端是National Instruments的DAQmx,它需要大约1gb的内存,而且将来还会有一些其他的后端,所以最好在linux下有一个配置脚本,您可以选择要编译gui的后端。我的一个朋友告诉我,我应该提到每个后端需要安装自己的sdk。如果你得到很多需要不同SDK的后端,这就不合理了。因此,在编译程序之前,最好先决定要为哪个后端sdk编译gui。