c#中写了一个用户控件,但是想保存下来,不知道能否生成dll,方便调用?还请各位高手指点。
------解决方案--------------------------------------------------------
可以。 把它单独 拿到一个项目里 然后编译那个项目就可以了。
然后要使用时在 添加部件 里 去 选择哪个文件就行了。 工具箱里就有了。 记住, 不要去引用菜单,那样工具箱里显示不出来
------解决方案--------------------------------------------------------
可以不过要建立 Web 应用程序(VS2005 SP1里有),而不是2005默认的那个 Web网站
1)建立一个ASP.NET Web应用程序
2) 建立一个 ASCX 作好
编译
用的时候需要把这个 ASCX 和 dll copy 到你要用到的这控件的工程里(cs不用带)
不过 ASCX 必须带着!
还有一种变法,用Web网站
作 ascx 然后发布网站
然后反编译那个工程把里边那个生成完的用户控件扣出来(这个方法没实验过、楼主自己实验吧)。
反编译后会看见类似这样的代码、很容易看懂的
- C# code
public class WebUserControl : UserControl{ // Fields protected Label Label1; // Methods protected void Page_Load(object sender, EventArgs e) { this.Label1.Text = DateTime.Now.ToString(); } // Properties protected HttpApplication ApplicationInstance { get { return this.Context.ApplicationInstance; } } protected DefaultProfile Profile { get { return (DefaultProfile) this.Context.Profile; } }}/*其实最终用的是这个,整个控件的初始化都在这里copy出来改改作成,自定义控件也可以省的自己手敲那些添加控件的代码*/public class webusercontrol_ascx : WebUserControl{ // Fields private static bool __initialized; // Methods public webusercontrol_ascx() { base.AppRelativeVirtualPath = "~/WebUserControl.ascx"; if (!__initialized) { __initialized = true; } } private Label __BuildControlLabel1() { Label __ctrl = new Label(); base.Label1 = __ctrl; __ctrl.ApplyStyleSheetSkin(this.Page); __ctrl.ID = "Label1"; __ctrl.Text = "Label"; IParserAccessor __parser = __ctrl; __parser.AddParsedSubObject(new LiteralControl("1212")); return __ctrl; } private void __BuildControlTree(webusercontrol_ascx __ctrl) { Label __ctrl1 = this.__BuildControlLabel1(); IParserAccessor __parser = __ctrl; __parser.AddParsedSubObject(__ctrl1); } protected override void FrameworkInitialize() { base.FrameworkInitialize(); this.__BuildControlTree(this); }}
------解决方案--------------------------------------------------------
只要设置一下项目属性中的输出选项就可以了,我平时也做了一些Web和Window的Dll