我有一些在两种类型的机器上运行的通用代码:
我有一个正在添加到整个框架设备中的特性,但是这段代码不会在紧凑的框架设备上运行。
还需要将引用的dll分发到Windows设备吗?
考虑过这个问题后,由于代码位于不同的文件中,我将忽略Windows解决方案中的文件,但我仍然希望从技术角度回答上面的问题。
标记
发布于 2013-06-27 03:11:11
如果使用早期绑定引用库(右键单击项目->添加引用),则需要将其与代码一起分发。这是因为代码的元数据将引用引用库。如果引用的库以相同的方式引用其他库,则更有趣的是,它们也应该可供CLR定位和加载。
但是,如果您使用反射、发现和在运行时执行绑定等技术,您将能够加载应用程序,而不需要CLR找到库直到您的代码需要它(通过反射调用它)。
发布于 2013-08-14 11:20:58
实际上,即使有时使用某些代码,也不必使用:-)例如,如果使用常量或枚举,则不需要dll,除非使用使用枚举类型的代码。因此,通常情况下,如果您有代码,这是不运行的,您可能不会分发dll。但有时,如果代码是这样的,则可能会出现类型为typeloadexception。
if (condition)
use type from another library
else
use type from current library如果条件不是某个编译相关常数,JITer可能不会做出正确的假设,该代码将不会运行,然后它将尝试加载该类型,然后就会出现异常。在这种情况下,我会使用条件编译,如下所示
#if COMPACT
//use type here
#else
//not use type here
#endifhttps://stackoverflow.com/questions/17330076
复制相似问题