【WPF】窗体项目 生成dll类库文件

我想把一个wpf应用程序的输出类型由windows应用程序改为类库该怎么做,直接在项目属性里改的话报错为 库项目文件无法指定applicationdefinition属性

wpf窗体项目运行之后bin/debug下面只有.exe文件,现在想要生成dll文件供其他第三方引用的实现方法。

1、删除App.xaml文件

2、将项目属性--应用程序--输出类型 改为类库。

下面可以没有,经测试,上面两步就可以实现,下面的内容是其他文章中的内容,备用。

    • 打开解决方案中的 Properties目录下的 AssemblyInfo.cs文件
    • 修改增加以下这个标签:
      [assembly: ThemeInfo(
          ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
        //(used if a resource is not found in the page, 
        // or application resource dictionaries)
          ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
        //(used if a resource is not found in the page, 
        // app, or any theme specific resource dictionaries)
      )]
    • 然后你就需要在项目增加一个名为 Themes 的目录,在目录里面添加一个名为 Generic.xaml 的ResourceDictionary
    • 这样,你就可以把在App.xaml中定义的资源全部放在Generic.xaml中了,系统根据程序集的设置会默认从这个资源目录中去寻找资源

 

2.------------------------------------- 

WPF应用程序工程类型转换-exe与dll相互转换

1.  Windows Application 转换成Class Library类型(exe → dll)

新建一个WPF应用程序,在该Project右键Properties,将Output type从Windows Application改成ClassLibrary。

编译不成功,报错如下:

网上搜到一种解决方法是:删掉App.xaml,重新编译就可以成功编译成dll类型了。

但是我还想在需要的时候再从ClassLibrary改成Windows Application。所以先把App.xaml及App.xaml.cs复制了一份作为备份,然后在工程中删除App.xaml(及App.xaml.cs),最终build出了WpfApplication1.dll。

 

2. Class Library转换成Windows Application类型(dll → exe)

在该Project右键Properties,将Output type从ClassLibrary改成Windows Application。

然后把App.xaml(及App.xaml.cs)再添加回Project。编译出错:

网上搜索这个错误的解决方案,查找到/obj/Debug/App.g.i.cs中没有生成Main,删除掉Obj后,重新编译生成Obj仍然解决不了。

最后搜到正确的解决方案: App.xaml右键属性中,Build Action从“Page”改成“ApplicationDefinition”,重新编译即可,成功生成WpfApplication1.exe。

对比一个正常的WPF应用程序的App.xaml的属性,确实都是Build Action:“ApplicationDefinition”。 因为后来我自己把App.xaml加回工程中,只是新加已存在项,所以加回去后Build Action默认变成了Page。

然后,就想到在Windows Application 转换成Class Library类型时,把App.xaml的Build Action改成Page,那么编译dll应该就不会报错了。一试之下,果然可以;还不用删除App.xaml这么麻烦。

 

转念一想,提供删除App.xaml来实现从WPF工程转换成类库工程的人,压根就没想过要反过来把类库工程转换成WPF工程吧。毕竟exe和dll都可以作为其他工程的引用,都可以正常使用其中的类等程序集资源。我对WPF工程和类库工程的这种相互转化的需求确实不太常见啊!

3.  总结

     exe → dll

  • Application Output type:Windows Application 转换成Class Library类型
  • App.xaml: Build Action从“ApplicationDefinition”改成“Page”

    dll → exe

  • Application Output type:Class Library转换成Windows Application类型
  • App.xaml: Build Action从“Page”改成“ApplicationDefinition”
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值