【问题标题】:Unable to load DLL Microsoft.WITDataStore32.dll, however DLL is in bin directory无法加载 DLL Microsoft.WITDataStore32.dll,但 DLL 在 bin 目录中
【发布时间】:2018-03-14 00:18:56
【问题描述】:
Unable to load DLL 'Microsoft.WITDataStore32.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

我看到的关于这个问题的其他答案说将它们复制到 bin 目录是解决方案。我清楚地可以在 bin 目录中看到我的。我已经卸载并重新安装了 TFS 扩展的 nuget 包、清理、重建等,现在只有大约 50 次。

此错误仅在运行时发生。解决方案构建得很好。

除了把整个东西烧成灰烬之外,我还有什么方法可以解决这个问题?

namespace (mynamespace)
{
    class TFSConnection
    {
        string tfsUrl = "(tfsurl)";
        string project = "(tfsProject)";
        public ITestManagementTeamProject GetProject()
        {
            TfsTeamProjectCollection tfs = new TfsTeamProjectCollection(TfsTeamProjectCollection.GetFullyQualifiedUriForName(tfsUrl));
            ITestManagementService tms = tfs.GetService<ITestManagementService>();

            return tms.GetTeamProject(project);
        }
    }
}

【问题讨论】:

  • 显示试图访问该模块的代码。
  • @PMF 我已经在上面添加了我的代码(带有消毒)。根据堆栈跟踪,它正在抛出tms.GetTeamProject()。一路追回DataStoreNative32.CreateDatastore(IntPtr&amp; handle)
  • 您使用的是哪个版本的 TFS?您使用的是哪个版本的 VS?包括将 DLL 'Microsoft.WITDataStore32.dll' 复制到 bin 文件夹中,您也可以在以下情况下尝试其他解决方案:stackoverflow.com/questions/31031817/…
  • @CeceDong-MSFT TFS 2015 并将项目从 Visual Studio 2013 迁移到 2015。
  • 您的项目是否在 VS 2013 中运行?你安装了哪个版本的 TFS 扩展 nuget 包?

标签: c# visual-studio tfs


【解决方案1】:

即使指示的文件 确实存在,您也可以获得给定的异常,但它的 依赖项 不存在。如果包附带更多 dll(我假设,因为它似乎是 C# 包装器),请确保它们也在 bin 文件夹中。

不幸的是,如果缺少本机 dll,.NET 不会告诉您缺少哪个,而是返回堆栈跟踪中最后一个托管 DLL 的名称。

【讨论】:

  • 那么我怎样才能找出解决方案缺少哪些依赖项呢?
  • 没有简单的方法可以确定。我记得上次我遇到这个问题时(在不相关的上下文中)有很多尝试直到它起作用。对于您的特殊情况,请参阅stackoverflow.com/questions/31031817/…
  • 是的,我已经看到了该线程,但它不适用,因为 DLL 非常清楚地位于我的 bin 目录中。在这个单一的解决方案中有超过 75 个项目,所以不幸的是,反复试验并不理想。
  • 如果您在“混合”(本机)模式下附加调试器,您可能可以获得更多信息。或者使用 SysInternals Process Monitor 找出它试图打开的文件。
猜你喜欢
  • 2017-06-26
  • 2015-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多