3

我正在将插件从 2013.1 迁移到 2014.1 Petrel Ocean 版本。当我尝试通过 2013.1 版本的 PluginPackager.exe 生成 PIP 文件时,它的功能正常。但是,在 2014.1 版本中出现以下问题:

Plug-in DID NOT PASS validation.
        The path of external libraries (e.g. assemblies that are shared between plug-ins) has to be added to the probing paths defined in PluginPackager(-32).exe.config.
        Could not load file or assembly 'PluginModule.dll, Version=2012.6.1.1618,Culture=neutral, PublicKeyToken=f95240d2d568401b' or one of its dependencies. The system can not find the file specified.
        Source: mscorlib

与版本 2013.1 中发生的情况不同,一切都表明 PluginPackager.exe (2014.1) 的执行正在对输出目录中存在的所有程序集及其引用进行预验证和加载。

一些插件我可以执行迁移,但是像我一样添加和删除引用被蒙住了。

请问,我如何找出缺少的参考资料?是记录在某处LOG吗?我想重申该项目可以正常编译。该错误仅发生在 PIP 文件的生成中。

4

1 回答 1

3

来自 linux 作为我的主要开发平台,我对 .NET 框架缺乏用于内省依赖关系的工具感到震惊。我找到了一些第三方工具(Dependency Walker、.NET Reflector)的引用,最终发现:

http://msdn.microsoft.com/en-us/library/e74a18c4%28v=vs.90%29.aspx

我无法开始fuslogvw工作(或者也许我只是不知道在哪里看——什么是wininet缓存?),但是页面底部有一个社区补充说明了要调整哪些注册表设置:

HKLM\Software\Microsoft\Fusion\

  1. EnableLog (DWORD) = 1启用“记录到异常文本”(无论是什么)
  2. LogFailures (DWORD) = 1记录绑定失败到磁盘
  3. ForceLog (DWORD) = 1记录 ALL 绑定到磁盘
  4. LogPath (String) = C:\tmp\定义放置日志文件的目录

在设置 (1)、(2) 和 (4) 之后,PluginPackager 在 C:\tmp\ 中生成了日志文件,这揭示了丢失的引用。

于 2014-09-23T07:37:44.293 回答