有很多关于混合发布和调试非托管DLL的讨论,但关于托管DLL的讨论不多。除了潜在的性能打击诱导额外的仪器,我不是还有什么可以出错?我不是.NETMaven,但我相信这种混合不属于良好实践。
eeq64g8w1#
我不相信在. net中混合调试和发布dll会有任何重大问题。至少我从来没有遇到过。这也是很难避免的,因为您很可能只能访问第三方dll的发布版本。调试dll将带来一些优化。但所有托管dll仍将由相同的抖动编译。因此,不存在对内存布局或其他可能影响非托管dll的问题产生任何分歧的风险。如果使用#if debug故意使调试版本和发布版本在某种程度上有所不同,您仍然可能会搬起石头砸自己的脚。但这是你的设计问题,而不是. Net。如果你担心遗留应用程序,我会更关心.Net版本。官方上你不能加载一个不同主版本的库。但是几个主要版本已经支持加载针对旧版本的库,但通常有一些限制,可能会导致运行时崩溃。
#if debug
1条答案
按热度按时间eeq64g8w1#
我不相信在. net中混合调试和发布dll会有任何重大问题。至少我从来没有遇到过。这也是很难避免的,因为您很可能只能访问第三方dll的发布版本。
调试dll将带来一些优化。但所有托管dll仍将由相同的抖动编译。因此,不存在对内存布局或其他可能影响非托管dll的问题产生任何分歧的风险。
如果使用
#if debug
故意使调试版本和发布版本在某种程度上有所不同,您仍然可能会搬起石头砸自己的脚。但这是你的设计问题,而不是. Net。如果你担心遗留应用程序,我会更关心.Net版本。官方上你不能加载一个不同主版本的库。但是几个主要版本已经支持加载针对旧版本的库,但通常有一些限制,可能会导致运行时崩溃。