我的代码如下:
IList<Users> myData = new List<Users>();
myData = HelperUsers.GetUsersList(); // return IList<Users>
BindingSource bsUsers = new BindingSource { DataSource = myData };
dataGridViewUsers.DataSource = bsUsers;
dataGridViewUsers.Columns["Name"].HeaderText = "Name";
dataGridViewUsers.Columns["LastName"].HeaderText = "Last name";
dataGridViewUsers.Invalidate();
Run Code Online (Sandbox Code Playgroud)
仍然可以在调试中完美地工作,但是当在"对象引用未设置为对象的实例"错误之后发生重新编译时.在线:
dataGridViewUsers.Columns["Name"].HeaderText = "Name";
Run Code Online (Sandbox Code Playgroud)
谢谢
如果我使用Eazfuscator对带有符号名称加密功能的vb.net程序集进行模糊处理(这样我可以使用Eazfuscator堆栈跟踪解码器),如果我发送PDB文件,这是否有效撤消?我想发送PDB文件,以便在堆栈跟踪中获取在错误报告中发回给我的行号.
我知道我可以通过保留发布版本的PDB文件来获取行号,但这是我现在不需要的额外复杂层,我将在未来实现.我只是想通过包含PDB文件来确保我没有有效地发送非混淆代码.
提前感谢任何建议.
我正在尝试使用eazfuscator.net混淆.net项目.问题是,当我使用.NET Reflector对其进行反编译时,您可以看到很多代码.所有私人成员都是混淆的,但公众成员提供了有关该计划的大量信息.
是否有可能混淆我图书馆的公众成员?我知道这不是由程序完成的,因为公共成员通常是从其他程序集访问的.但是,是否有可能对整个解决方案进行模糊处理,以便从工具中重命名来自其他程序集的访问?
我已经尝试过使用了 ObfuscationAttribute
[assembly: Obfuscation(Feature = "Apply to type * when public: renaming",
Exclude = false)]
Run Code Online (Sandbox Code Playgroud)
但它确实没有任何区别.
那么有可能用eazfuscator或其他工具做类似的事情吗?
我正在使用Eazfuscator.NET来混淆我的项目.
我筛选了Eazfuscator的文档(可能不够深入),并想知道如何从混淆中排除我的项目的特定.cs文件.
使用此代码:
Dim sf As New StackFrame(0, True)
MessageBox.Show("Module: " & sf.GetFileName & " -Line: " & sf.GetFileLineNumber.ToString)
Run Code Online (Sandbox Code Playgroud)
我可以获得发生未处理异常的类和行号(in ApplicationEvents.vb, Sub MyApplication_UnhandledException(...) Handles Me.UnhandledException
)
但是,如果我使用EazFuscator(以及可能与其他任何人)混淆代码,我会丢失数据:我得到一个NullString,0代表行号.
插入代码:
<Assembly: Obfuscation(Feature:="encrypt symbol names with password XXXX", Exclude:=False)>
Run Code Online (Sandbox Code Playgroud)
没有什么变化.我可以反编译e.message,但线路丢失了.如何在混淆代码中获取错误行?
我正在使用Eazfuscator 3.3(免费版),我可以模糊我的所有项目,除了一个(在特定的解决方案中).
这是我得到的错误:
错误16处理输入文件'DAL.dll'时出错 - >发生一个或多个错误 - >索引超出范围.必须是非负数且小于集合的大小.
C:\ Projects__ __ __ DAL\EXEC __ _DAL
我试图手动运行:
C:\Program Files (x86)\Eazfuscator.NET\Eazfuscator.NET.exe "C:\Projects\________\______DAL\bin\Release\______DAL.dll" --msbuild-project-path "C:\Projects\______\______DAL\______DAL.csproj" --msbuild-project-configuration "Release" --msbuild-project-platform "AnyCPU" --msbuild-solution-path "C:\Projects\______\______.sln" -n --newline-flush -v 3.3"
Run Code Online (Sandbox Code Playgroud)
但我得到了相同的结果.
我甚至试过这个:
C:\Program Files (x86)\Eazfuscator.NET>Eazfuscator.NET.exe "C:\Projects\_______\_______DAL\bin\Release\________DAL.dll"
Run Code Online (Sandbox Code Playgroud)
但是,正如你所看到的 - 我得到了相同的结果:
Eazfuscator.NET版本3.3(发布版本3.3.161.40493)版权所有(C)2007-2012 Oleksiy Gapotchenko
模糊汇编' _ __ DAL.dll'...错误:处理输入文件时发生错误''____ _DAL.dll' - >发生了一个或多个错误 - >索引超出范围.必须是非负数且小于集合的大小.
我有它,因为我引用的发生的感觉- FluentNHibernate.dll(1.2.0.712),NHibernate.dll(3.1.0.4000),NHibernate.ByteCode.Castle.dll(3.1.0.4000).
所以我试图在我的程序编译后对其进行模糊处理.我很确定你是怎么做的(?)
我正在使用一个非常流行的名为EazFuscator的免费软件,它有一个很好的小命令行工具.
所以,如果我去:
Eazfuscator.NET MyProgram.exe
Run Code Online (Sandbox Code Playgroud)
它会成功地混淆它,当它完成后,我会尝试运行我的程序并崩溃!(给我一些运行时异常)
我尝试的另一件事是混淆我的程序使用的DLL之一:
EazFuscator.NET SomeDLLMyProgramUses.dll
Run Code Online (Sandbox Code Playgroud)
它会成功地混淆它,但是当我运行我的程序崩溃时......
我首先想知道,无论这个EazFuscator程序如何,是否有可能混淆.DLL和.EXE文件?它通常不应该打破它们吗?
注意:我的程序中确实有一些反映,也许这就是导致问题的原因..但我不是百分百肯定的.
我正在尝试使用EAZfuscator混淆我的Winforms应用程序.当我尝试运行混淆的应用程序时,我得到一个实体框架异常(ProviderIncompatibleException).
使用IlSpy来查看混淆的程序集 - 我注意到虽然我的大多数命名空间和类都保持原样(它似乎只是一些已重命名的变量名),但它已完全删除了我的DataContext类(即一个派生自DbContext).
我假设我的ProviderIncompatibleException异常是由于需要匹配datacontext类名的连接字符串的名称.我的app.config中有这个:
<add name="DsDataContext" connectionString="Data Source=Database.sdf" providerName="System.Data.SqlServerCe.4.0" />
Run Code Online (Sandbox Code Playgroud)
其中DsDataContext是我的类的名称,它派生自DbContext(看起来已被Eazfuscator删除的那个).
有谁之前经历过这个吗?是什么原因导致Eazfuscator删除了这个类?此外,我很好奇为什么我的班级名称保持不变.混淆似乎没有被混淆.
更新
以下是完整性的例外情况.由于我上面提到的缺少课程,我认为我得到了它:
键入:System.Data.ProviderIncompatibleException
消息:从数据库获取提供程序信息时发生错误.这可能是由实体框架使用不正确的连接字符串引起的.检查内部异常以获取详细信息,并确保连接字符串正确.
Source = EntityFramework
堆栈跟踪:
at System.Data.Entity.ModelConfiguration.Utilities.DbProviderServicesExtensions.GetProviderManifestTokenChecked(DbProviderServices providerServices, DbConnection connection)
at System.Data.Entity.ModelConfiguration.Utilities.DbConnectionExtensions.GetProviderInfo(DbConnection connection, DbProviderManifest& providerManifest)
at System.Data.Entity.DbModelBuilder.Build(DbConnection providerConnection)
at System.Data.Entity.Internal.LazyInternalContext.CreateModel(LazyInternalContext internalContext)
at System.Data.Entity.Internal.RetryLazy`2.GetValue(TInput input)
at System.Data.Entity.Internal.LazyInternalContext.InitializeContext()
at System.Data.Entity.Internal.InternalContext.CreateObjectContextForDdlOps()
at System.Data.Entity.Database.Exists()
at ??.()
at ??.()
Run Code Online (Sandbox Code Playgroud) eazfuscator ×8
obfuscation ×6
c# ×5
.net ×4
datagridview ×1
pdb-files ×1
public ×1
vb.net ×1
winforms ×1
wpf ×1