我正在做一个aspx页面来显示库的代码使用示例.
所以基本上,我想举例来说:源代码按钮输出(在数据网格中)
我不认为将代码从按钮后面复制并粘贴到aspx页面以用于显示目的,而是认为能够在运行时读取实际源代码并显示它可能会很好.除了光滑之外,这还有额外的好处,即确保显示的源代码是最新的,而如果有人做出更改并忘记使用新代码更新aspx页面,则复制和粘贴可能会过时.
我可以想到两种可能的方法:1)(kludgy) - 在文件后面部署代码,然后可以在运行时读取,并且可以解析和显示正确的功能代码.2)(首选)运行时反编译DLL(作为反射器)并显示代码.
所以我知道如何做#1,但不知道#2(如果它甚至可能).
HI,有没有办法防止C#中的特定dll在反射器中打开.我可以打开许多dll,并可以使用反射器获取代码.但是当试图打开一些dll时,它会显示一条错误消息,指出"该特殊dll不包含CLI标题.".
我怎么能像这样制作一个dll?
在查看System.Data.Entity.dllfor .NET 4.0时,没有反编译方法.我只看到方法存根.我尝试重新安装反射器,但它仍然无法正常工作.我能够很好地反编译其他.NET程序集.
在检查使用.NET Reflector导出的反汇编代码时,我注意到并不总是维护任何给定实体的属性顺序.
我在比较同一个程序集的两个版本的反汇编代码时已经看到了这一点(在两个版本之间看到了一些小的代码更改),在版本之间没有实际更改的类中.
例如
[WebBrowsable, Personalizable]
public int SomeProperty ...
Run Code Online (Sandbox Code Playgroud)
VS
[Personalizable, WebBrowsable]
public int SomeProperty ...
Run Code Online (Sandbox Code Playgroud)
这非常不方便,因为它看起来好像没有改变的文件.
在这种情况下,什么控制了属性的顺序,是否可以采取任何措施来维护订单?
我正在为一个丢失了其VB.Net WinForms应用程序源代码的客户端工作.他们拥有的组件根本没有混淆.我试图恢复尽可能多的源代码作为C#源,并尝试了几种反编译程序集的工具,包括Reflector,ILSpy和JustDecompile(所有最新版本),但它们都产生了大量错误的代码他们.由于生成的代码中存在大量错误,我将询问具体的错误(在不同的问题中),希望得到更直接的答案,并以此方式尝试解释为什么所有工具都难以反编译这个集会.
这个问题涉及这样一个事实,即所有这些工具生成的代码总是有大量无效的成员变量(字段),如下所示:
private short $STATIC$Report_Print$20211C1280B1$nHeight;
private ArrayList $STATIC$Report_Print$20211C1280B1$oColumnLefts;
private StaticLocalInitFlag $STATIC$Report_Print$20211C1280B1$oColumnLefts$Init;
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么生成的代码有这些无效的成员变量以及我如何解决这些变量?
基本上,静态System.Linq.Expressions.Expression.Bind()方法中发生的一些内部检查在我的属性上显示"方法不是属性访问器",显然是属性.使用Reflector,我已经最小化了导致问题的代码量,而且我不能为我的生活找出为什么会发生这种情况.我唯一的猜测是它与属性不在类本身上这一事实有关,但我认为这应该仍然有效:
我试图用尽可能少的代码做一个小例子.下面的代码应该完整运行.
using System;
using System.Reflection;
public class Base
{
public virtual int Id { get; set; }
}
// As you can see, SubClass does not override the Id property of Base.
public class SubClass : Base { }
class Program
{
static void Main(string[] args)
{
// Getting the property directly from the type.
PropertyInfo propertyInfo = typeof(SubClass).GetProperty("Id");
MethodInfo setMethod = propertyInfo.GetSetMethod();
/* Code from here on out is from the System.Linq.Expressions.Bind() method (the one
that …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Infer.Net(用于概率编程的F#库)并在VS11 Beta中运行示例导致错误:
无法加载文件或程序集'FSharp.Core,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一.该系统找不到指定的文件.
如果我打开使用Reflector中的infer.net样本的dll,一个,probcomp.dll,说它无法自动找到"FSharp.Core,Version = 4.0.0.0",我需要手动选择位置.
这两件事是否相关?是否有可能使用"固定路径"引用编译probcomp.dll,现在它在我的机器上是不一样的?
PS:当然fsharp项目从头开始工作正常..
PS2:视觉工作室中参考的dll没有显示任何未找到它们的迹象.我可以在对象浏览器中打开它们.
UPDATE
在程序开始时错误发生,没有时间看到任何东西.然而,它发生在程序内:如果未调用以下行
let coinsD = inferExpr <@ coins @>
Run Code Online (Sandbox Code Playgroud)
然后错误不会发生.有了它,在另一个例子中引发了以下错误.不出所料,它来自dll,它的行为在反射器中很奇怪.
无法加载文件或程序集'FSharp.Core,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)
在对象浏览器中,所述函数的签名非常奇怪:
public static IDistribution<b>inferExpr<b>(**unknown-type e**)
Run Code Online (Sandbox Code Playgroud)
是的,在我告诉他在打开dll 后在哪里找到Fsharp 4.0.0时,在反射器中,它有签名
public static IDistribution<b> inferExpr<b>(FSharpExpr<b> e);
Run Code Online (Sandbox Code Playgroud)
这个dll必须有某种奇怪的硬链接依赖关系,而且反射器比VS更聪明(或者不是......)来解决它.
为了从坏事中获益,如果你对这个dll中可能发生的事情有所了解,这可能是一个学习的机会.
我的情况是:
我们是否有任何服务/工具可以将Orchestration(+ Mapping)反转为原始格式(来自DLL/MSI或运行BizTalk应用程序)?
如果反向不起作用,我希望看到Orchestration流程就像Visual Studio设计器一样.这足以让我追踪一切
reflector biztalk reverse-engineering biztalk-orchestrations
reflector ×10
.net ×6
c# ×6
.net-4.0 ×2
decompiling ×2
asp.net ×1
attributes ×1
biztalk ×1
disassembly ×1
dll ×1
expression ×1
f# ×1
ilspy ×1
reflection ×1
vb.net ×1