博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【WPF】app.g.cs文件无法修改、修改后自动恢复问题解决办法
阅读量:6787 次
发布时间:2019-06-26

本文共 2772 字,大约阅读时间需要 9 分钟。

刚接触WPF,公司要求用WPF开发一个项目,单机版【小额担保贷款信息统计系统】,后期要求登录时加上Ukey验证,于是开始找项目的入口方法,没找到,重写Main入口方法,编译报错,说已经存在Main方法,网上查资料,了解到是因为WPF应用程序在创建的时候就会为我们创建Main函数并调用Application实例的run函数,从而启动Application进程。这个Main函数就是app.g.cs中那个自动生成的Main函数。app.g.cs文件的位置在\obj\x86\Debug或Release文件夹下(根据你的输出方式)。自动的Main函数如下:

      

        /// <summary>
        
///
 Application Entry Point.
        
/// </summary>
        [System.STAThreadAttribute()]
        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
        
public static void
 Main() {
            PettySecuredLoanMS.App app 
= new
 PettySecuredLoanMS.App();
            app.InitializeComponent();
            app.Run();
        }

我试图在此Main方法中添加自己的Ukey认证逻辑

 

 

 1         /// <summary>
 2         ///
 Application Entry Point.
 3         /// </summary>
 4 
        [System.STAThreadAttribute()]
 5 
        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
 6         public static void
 Main() {
 7         if (!Webac.Webac_CustomerSystemValidate())//是否插入Ukey并且Ukey是本系统使用
 8 
            {
 9                 CheckUKWhenLogin newWindow = new
 CheckUKWhenLogin();
10 
                newWindow.ShowDialog();
11                 return
;
12 
            }
13             PettySecuredLoanMS.App app = new
 PettySecuredLoanMS.App();
14 
            app.InitializeComponent();
15 
            app.Run();
16         }

运行 成功

到这里以为成功了,岂料点重新生成应用程序时,会弹出消息提示,让我讲app.g.cs文件恢复,我选择不恢复,这样虽然麻烦,也算实现了,但是发现当项目关闭重新打开后,app.g.cs文件又重新生成。

解决方案1:

之所以出现这样的原因是由于App.xaml文件的属性中的生成操作(Build Action)所导致的。

将默认的ApplicationDefinition改为Page

然后在App.xaml.cs文件中实现Main方法

 

 /// <summary>
    
///
 Interaction logic for App.xaml
    
/// </summary>
    public partial class
 App : Application
    {
        [STAThread]
        
static void Main(string
[] args)
        {
            
if (!
Webac.Webac_CustomerSystemValidate())
            {
                CheckUKWhenLogin newWindow 
= new
 CheckUKWhenLogin();
                newWindow.ShowDialog();
                
return
;
            }
            PettySecuredLoanMS.App app 
= new
 PettySecuredLoanMS.App();
            app.InitializeComponent();
            app.Run();
        }
    }

 

重新生成,成功。

下面简单说下各个Buid Action之间的区别

 

* None: 此文件不参与编译也不被输出。比如:工程中的文档文件, readme.txt。

* Compile: 参与编译并输出。主要是代码文件。

* Content: 不参与编译,但会被输出。

* Embedded Resource: 此文件被嵌入到主工程生成的DLL或exe中。主要是资源文件。

* ApplicationDefinition: 和Page类似,但只用于Silverlight的启动页面(默认是App.xaml)。

* Page: Silverligh中所有的usercontrol/page/childwindow xaml都属于"Page” build,其它的build action不能将code behind文件和xaml文件连接起来。

* CodeAnalysisDictionary: 自定义的CodeAnalysis字典。(参考)

* Resource:embeds the file in a shared (by all files in the assembly with similar setting) assembly manifest resource named AppName.g.resources

* SplashScreen: Silverlight的欢迎界面。

* DesignData: Sample data types will be created as faux types. Use this Build Action when the sample data types are not creatable or have read-only properties that you want to defined sample data values for.

* DesignDataWithDesignTimeCreatableTypes: Sample data types will be created using the types defined in the sample data file. Use this Build Action when the sample data types are creatable using their default empty constructor.

* EntityDeploy: 适用于Entity框架。

 

 

转载于:https://www.cnblogs.com/yigedaizi/archive/2011/06/16/WPFapp_g_cs.html

你可能感兴趣的文章
微信机器人高级版常见问题汇总
查看>>
容器技术|Docker三剑客之docker-machine
查看>>
Masonry 第三方框架页面自动布局
查看>>
博客转移声明
查看>>
利用论坛营销推广的完美“6步曲”
查看>>
不是所有的视频外链都是高质量的
查看>>
依赖和关联的区别
查看>>
DELL服务器硬件错误检查
查看>>
JD模拟用户登录(保持session)
查看>>
iOS之简单瀑布流的实现
查看>>
rsync + lsyncd 数据同步
查看>>
sublimeText3 设置格式化代码快捷键
查看>>
mysql 事务
查看>>
PHP语法
查看>>
电脑网络布线中会遇到的十大陷阱
查看>>
XGBOOST原理解析
查看>>
前端传递json数据给后台
查看>>
什么样的Web开发框架才是好的前端框架
查看>>
【git命令】git-rebase
查看>>
Java定时任务调度工具Timer
查看>>