如何在设计时解决assembly?
我有一个可扩展性库(或一个开头),带有UITypeEditor。 我现在想用EditorAttribute来装饰属性。 我不想引用扩展性库,因为它不需要部署,所以我使用这个:
[Editor("MyProject.Extensibility.MyUIEditor, MyProject.Extensibility, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null", typeof (UITypeEditor))] MySpecialType SpecialType { get; set; }
这不起作用。 类型编辑器用于枚举,当我使用它时,会显示标准枚举下拉列表。 但是,如果将类型编辑器复制到项目中并使用直接类型引用,则一切正常。 我已经尝试使用Activator.CreateInstance测试我的字符串,我已经有了它的工作。 MyProject.Extensibility.dll被复制到几乎每个地方(所有项目的bin / debug文件夹)。 是否有一些特殊的地方可以放置可扩展性的DLL .net可以解决程序集?
谢谢!
只需输入Regedit.exe并创建一个密钥,如下所示:
HKLM SOFTWARE 微软 .NETFramework V2.0.50727 AssemblyFoldersEx 的StackOverflow
密钥的名称并不重要,在VisualFoldersEx中列出的所有文件夹名称都由Visual Studio搜索Assemblies设计时。
必须使用具有文件夹路径作为值的(默认)条目在Regedit中添加文件夹。 (例如,参见兄弟键)。
有趣的是,当您在.NET选项卡上的项目上下文菜单上单击“添加新引用”时,AssemblyFoldersEx注册表项中存在的所有文件夹也将自动出现。
另一种方法是将所需的程序集添加到Global Access Cache(c: Windows Assembly)
我刚做了以下测试:在资源程序集中,我输入以下代码:
public class MyEditor : UITypeEditor { public override UITypeEditorEditStyle GetEditStyle(System.ComponentModel.ITypeDescriptorContext context) { return UITypeEditorEditStyle.Modal; } public override object EditValue(System.ComponentModel.ITypeDescriptorContext context, IServiceProvider provider, object value) { MessageBox.Show("Works"); return null; } }
在使用者程序集(Windows窗体可执行程序集)上,我创建了一个派生自Button的组件,如下所示:
public class MyButton : Button { [Editor("AssemblyReferenceCL.MyEditor, AssemblyReferenceCL", typeof(UITypeEditor))] public String MyProp { get; set; } }
两个组件之间没有参考。 一切都很好。
上述就是C#学习教程:如何在设计时解决assembly?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/936367.html