我在c#的构建解决方案中经历了一些奇怪的情况。
解决方案中的所有5个项目。
A.exe B.dll b.dll C.dll c.dll(B,b,C,c都是usercontrol项目)。
A.exe引用了B.dll和C.dll。
B.dll引用了b.dll。
C.dll引用了c.dll。
所有引用的选项是"复制本地" :是的。
当构建A.exe项目时,在Debug文件夹中,创建A.exe和B.dll以及b.dll和C.dll。 (不是c.dll)。
最后我知道差异的原因。
b.dll usercontrol用于具有b元素名称的B.dll xaml。
但是c.dll usercontrol没有名称。
B与C的区别在于是否在xaml中使用了所使用的控件的名称。
任何人都可以解释一下,为什么这个差异会导致exe项目调试文件夹中的dll拷贝?
答案 0 :(得分:0)
当你给一个控件x:Name
时,它会导致它在生成的代码(部分)类后面为它创建一个实例。这足以使引用跟随系统检测引用,并在依赖项dll中复制。
这就是为什么你会看到行为上的差异。