我有一个简单的c#应用程序,我想从self.e1_input = IntVar()
self.e2_input = IntVar()
...
self.e1 = ttk.Entry(self, textvariable=self.e1_input, validate='all', ...)
self.e2 = ttk.Entry(self, textvariable=self.e2_input, validate='all', ...)
...
引用一个程序集,而不将该东西复制到bin文件夹。
我有办法改变如何引用/加载程序集吗?
编辑:程序集不在gac中
答案 0 :(得分:1)
实际上,在运行时可以在配置中使用<codeBase>
标记:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="MyAssembly2" culture="neutral" publicKeyToken="307041694a995978"/>
<codeBase version="1.0.1524.23149" href="FILE://C:/Myassemblies/MyAssembly2.dll"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
您可以参考MSDN获取更具体的信息。此解决方案的缺点是您必须手动指定程序集版本。
答案 1 :(得分:0)
您问题的多种解决方案。
通过选择.dll属性来避免将库复制到输出文件夹集Copy Local
为false。
选项1:
在配置文件中包含以下部分,并允许运行时从您指定的位置加载。
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="MyAssembly" publicKeyToken="2d65620afb84f19d" />
<codeBase version="1.0.0.0" href="C:\..\..myassembly.dll" />
</dependentAssembly>
</assemblyBinding>
</runtime>
选项2:
众所周知的选项,使用反射加载程序集。
Assembly.Load(@"C:\..\..myassembly.dll")
希望这有帮助!