你们有没有遇到过这个问题?
我试图在运行Windows 7 Professional SP1的计算机上混淆使用Visual Studio 2008 SP1上的C#/ .NET 3.5编写的解决方案,并在使用Dotfuscator Community Edition时不断收到相同的错误
无法找到在程序集上运行的兼容版本的ildasm(解决方案输出exe的有效路径).此程序集最初使用.NET Framework v2.0.50727构建
我已经尝试过谷歌搜索,到目前为止没有任何帮助(或者,或者我的Google-Fu让我失望).
我已经尝试重新安装Windows SDK,并重新安装Visual Studio 2008,但都没有帮助.
我假设这是导致问题的Dotfuscator社区版,因为同事在他的机器上使用相同的xml设置文件,并且它对解决方案进行模糊处理没有问题.
我的想法是,正如它在错误消息中所说,Dotfuscator找不到与.NET 3.5兼容的ildasm(用于混淆的库/函数?)文件,只有.NET 2.x. 这是正确的讽刺吗?
之前,Dotfuscator工作得很好.但是,在最近一轮Windows更新后,它似乎不再适用于我的机器 - 最近的一些Windows更新导致了网络和一些同事笔记本电脑(撤销登录凭据,使某些程序失效,通常),这就是为什么我假设这是造成这种情况的更新之一.
当然,除了相同的设置文件和解决方案输出不会导致Dotfuscator在同事的机器上失败之外,我不会将其归结为用户错误.
有什么建议?
我正在开发一个控制台应用程序,它创建一个表单来提醒某些给定状态的用户 - 在稍后阶段,代码库将成为一个类库.
但是,现在,我需要显示表单(ShowDialog将是这里最好的方法,我猜)然后在表单关闭之前调用任意方法.
作为一个例子,我需要显示表单,设置标签控件的文本值,等待n秒,然后更改标签的值,然后关闭表单.我知道这听起来有点微不足道,但我正在尝试对设计进行概念验证.
我已经浏览了一下它看起来不可能,因为ShowDialog()要求我在调用方法/类之前继续通过代码列表之前关闭表单.
这是我到目前为止所拥有的:
PopUpForm myForm = new PopUpForm(string messageToDisplay);
myForm.ShowDialog();
//call myForm.someMethod() here, before the form closes
//dispose of the form, now that we've no use for it
myform.Dispose();
//target method in PopUpform class
public void someMethod()
{
lblText.Text = "Waiting for some reason";
//wait n number of seconds
lblText.Text = "Finished waiting. Form will now close";
//it doesn't matter if the form closes before the user can see this.
}
Run Code Online (Sandbox Code Playgroud)
看起来ShowDialog()不支持这种行为.我正在研究BackgroundWorker线程,但是想知道是否有人对此有任何建议,或者之前遇到过这个问题.
我最近注意到Visual Studio设计器(我猜它叫做那个)已经删除了我的一些方法句柄.有没有办法阻止设计师这样做?
我的意思是这样的一个例子:我有一个方法,当我的MainForm关闭时称为MainForm_Closing - 基本上是"你想保存更改吗?" 提示.埋在我的Main.designed.cs中的是:
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_Closing);
Run Code Online (Sandbox Code Playgroud)
在与我的MainForm对象相关的部分中.
但是,如果我对MainForm进行任何可视化更改(将控件拖到其上,编辑标签名称,更改图像属性等),则Visual Studio中创建设计器的部分似乎会清除我的自定义代码.
我猜测设计器在编译时被调用来创建designer.cs(因此它可以很容易地编译成IL),因此当然会删除我的自定义句柄.
顺便说一句:我正在生成我的自定义句柄是在IntelliSense的帮助下创建的.例如我输入:
this.FormClosing +=
Run Code Online (Sandbox Code Playgroud)
和IntelliSense建议正确的句柄,并说"按TAB插入").
任何帮助理解这一点(并阻止Visual Studio删除我的句柄)将不胜感激.