C# 实例化对象(使用WorkItemStore类)时ASP5/MVC6中的DllNotFoundException

C# 实例化对象(使用WorkItemStore类)时ASP5/MVC6中的DllNotFoundException,c#,asp.net-mvc,asp.net-core-mvc,C#,Asp.net Mvc,Asp.net Core Mvc,我试图在我的MVC6(DNX4.5)web应用程序中实例化该类,但得到以下DllNotFoundException错误 Microsoft.TeamFoundation.WorkItemTracking.Client.DataStoreLoader.dll中发生“System.DllNotFoundException”类型的异常,但未在用户代码中处理 其他信息:无法加载DLL“Microsoft.WITDataStore32.DLL”:找不到指定的模块。(来自HRESULT的异常:0x80070

我试图在我的MVC6(DNX4.5)web应用程序中实例化该类,但得到以下DllNotFoundException错误

Microsoft.TeamFoundation.WorkItemTracking.Client.DataStoreLoader.dll中发生“System.DllNotFoundException”类型的异常,但未在用户代码中处理

其他信息:无法加载DLL“Microsoft.WITDataStore32.DLL”:找不到指定的模块。(来自HRESULT的异常:0x8007007E)

这是我的密码

        200Uri = new Uri("http://x contains tfs server link of company x");
        200ProjectCollection = new TfsTeamProjectCollection(200Uri);
        200WorkItemStore = new WorkItemStore(200ProjectCollection);
更令人惊奇的是,相同的类和代码在我以前的ASP 4.5 Windows窗体应用程序上工作。这是点网核心的问题吗?我已经在dot net core中切换到dnx 4.5.1了?还是MVC6?这是32-64位库的问题吗

有关错误的更多详细信息-

System.DllNotFoundException - {"Unable to load DLL 'Microsoft.WITDataStore32.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)"}
Data - {System.Collections.ListDictionaryInternal}
HelpLink - Null
InnerException - null
Message - Unable to load DLL 'Microsoft.WITDataStore32.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
Source: Microsoft.TeamFoundation.WorkItemTracking.Client.DataStoreLoader
StackTrace -    at Microsoft.TeamFoundation.WorkItemTracking.Client.DataStore.DataStoreNative32.CreateDatastore(IntPtr& handle)
   at Microsoft.TeamFoundation.WorkItemTracking.Client.DataStore.DataStoreNative.CreateDatastore(IntPtr& handle)
   at Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemStore.InitializeInternal()
   at Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemStore.Microsoft.TeamFoundation.Client.ITfsTeamProjectCollectionObject.Initialize(TfsTeamProjectCollection teamProjectCollection)
   at Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemStore..ctor(TfsTeamProjectCollection teamProjectCollection, WorkItemStoreFlags workItemStoreFlags)
   at Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemStore..ctor(TfsTeamProjectCollection teamProjectCollection)
   at FinalApp1.Models.Config..ctor() in C:\Users\eashan\Documents\Building a Web App using ASP 5\FinalApp1\src\FinalApp1\Models\Config.cs:line 23

TargetSite - {Void CreateDatastore(IntPtr ByRef)}
TypeName - ""
任何形式的帮助都将不胜感激。

请使用NuGet
  • 打开NuGet包管理器
  • 去浏览
  • 安装Microsoft.TeamFoundationServer.ExtendedClient
  • 安装Microsoft.WindowsAzure.ConfigurationManager
  • 下面是生成的
    project.json
    文件(为了清晰起见删除了部分)

    安装这两个包之后,将生成并运行以下代码

    var xUri = new Uri("http://www.somedomain.com");
    var xProjectCollection = new TfsTeamProjectCollection(xUri);
    var xWorkItemStore = new WorkItemStore(xProjectCollection);
    

    现在,我已经设法让它工作了。我比较了我的windows应用程序表单和我的dnx执行环境的构建路径

    使用ILSpy检查了Microsoft.TeamFoundation.WorkItemTracking.Client.DataStoreLoader.dll库后,我发现它确实引用了Microsoft.WITDataStore32.dll,尽管它存在于dnx执行文件夹中

    C:\Users\eashan.dnx\packages\Microsoft.TeamFoundationServer.ExtendedClient\14.89.0\lib\native\x86

    它在中国并不存在

    C:\Users\eashan.dnx\packages\Microsoft.TeamFoundationServer.ExtendedClient\14.89.0\lib\net45 文件夹


    因此,我将库从第一个位置复制到了另一个位置,并且成功了

    这可能是因为
    Microsoft.WITDataStore32.dll
    未在.Net内核上编译。如果您使用的是.Net Core版本,则可能不可用。尝试切换到.Net 4.6,看看是否有效。我已经将.Net 4.5用于我的应用程序,因为我已经从project.json中删除了.Net核心引用。你的意思是我不应该使用MVC6吗?200Uri、200ProjectCollection和200WorkItemStore变量是什么?这些都是C#中的非法变量名,所以我不确定您是如何构建的。抱歉,这200个变量前面有公司名称,我已将其从代码示例中删除。谢谢你的帮助。
    var xUri = new Uri("http://www.somedomain.com");
    var xProjectCollection = new TfsTeamProjectCollection(xUri);
    var xWorkItemStore = new WorkItemStore(xProjectCollection);