在调试过程中我的silverlight应用程序dll从哪里加载/使用?

时间:2011-07-10 17:43:35

标签: c# .net silverlight debugging

我从模板创建了一个新的Silverlight 3并启动了一个调试会话。但是,当我查看模块窗口时,我看到了以下内容:

Modules window

缺少Silverlight3Application.dll的路径(即使发现pdb很好)。我确保它不仅仅是一个UI问题,实际上我可以删除位于PDB旁边的Silverlight3Application.dll文件,没有任何问题。

问题:

  1. 我的DLL实际上是从运行时的 UPDATE 加载到哪里的?
  2. 为什么不从预期位置加载?
  3. 是否可以从PDB文件旁边的位置加载,我实际上期望从中加载?
  4. 更新1

    我真正需要的是在运行时使用Reflection找出Silverlight3Application.dll的位置。

    然而,就像模块窗口隐藏真实位置一样,反射也是如此:

    • 程序集:{Silverlight3Application,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null} System.Reflection.Assembly {System.Reflection.RuntimeAssembly}
    • FullName:“Silverlight3Application,Version = 1.0.0.0,Culture = neutral, publicKeyToken = null“string
    • ImageRuntimeVersion:“v2.0.50727”string
    • IsDynamic:false bool
    • 位置:“”字符串

    我尝试使用Prcocess Explorer手动定位此程序集,其位置似乎相当随机:

    C:\用户\维塔利彼得\应用程序数据\本地\组件\ DL3 \ G1KDTYO5.XJ3 \ 6GQ19BER.4OW \ 5e5cbf28 \ 50366acf_1a3ecc01 \ Silverlight3Application.dll

    任何人都知道如何在运行时找到程序集的位置?如果没有其他工作,使用外部工具是一个选项,但是,我必须能够从代码执行该工具。我很乐意听到你的想法。

    谢谢!

2 个答案:

答案 0 :(得分:1)

默认情况下,Silvelight DLL位于Silverlight项目的\ Bin \ Debug中。

如果要查看加载的确实DLL的位置:

  1. 输出路径在构建期间在Visual Studio输出窗口中可见
  2. 使用ProcessMonitor
  3. 有关Silverlight项目结构的详细说明,请参阅http://msdn.microsoft.com/en-us/library/cc838164%28v=vs.95%29.aspx

    Update1 :请参阅How do I get the path of the assembly the code is in?

答案 1 :(得分:1)

您是否考虑过如何在浏览器中实际执行程序集?它来自.XAP文件,而不是通过项目文件夹下构建/存储的任何DLL。更具体地说,您的项目构建一个DLL,然后将其打包到XAP文件中,然后将其提供给您的Web浏览器,该文件解压缩XAP文件,读取清单并加载指定的DLL入口点。

从XAP根目录到DLL的路径就是文件名(除非您自己自定义了XAP)。这可能就是没有指定任何路径的原因。