[英]VSXI referenced assemblies not loaded properly
在我给VSIX我已引用NuGet包的.netstandard的版本Microsoft.TeamFoundationServer.Client得到的列表项目利用GetProjects()
的方法ProjectHttpClient
从类Microsoft.TeamFoundation.Core.WebApi.dll
assemly。
在方法调用时,我在运行时Method not found
异常。
我花了很长时间才知道,这是因为 VSIX 已加载到 devenv.exe 应用程序域中,该应用程序域已经从以下路径加载了具有不同版本(以及不同的GetProjects()
方法签名GetProjects()
的相同引用程序集:
C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Enterprise\\Common7\\IDE\\CommonExtensions\\Microsoft\\TeamFoundation\\Team Explorer
。
我为使其工作所做的一些事情:
InitializeAsync
方法期间使用Assembly.LoadFrom
手动将 nuegt 程序集附加到加载的程序集列表中,但没有帮助。assemblyIdentity
指向运行时使用该 nuget 版本,结果证明这是毫无意义的,因为它显然在 VSIX 包中被忽略了。 (链接) 。PackageReference
替换为指向该版本程序集的程序集Reference
,位于上述解决问题的Team Explorer
文件夹中,但它使我的 VSIX 与目标环境二进制版本紧密绑定。 这听起来不是一个合乎逻辑的决定。我们可以发现函数“GetProjects”中有6个参数。 最后一个参数的类型是布尔值。 我还可以在“ProjectHttpClient”类上找到相关方法
public virtual Task<IPagedList<TeamProjectReference>> GetProjects(ProjectState? stateFilter, int? top, int? skip, object userState, string continuationToken)
{
return GetProjects(stateFilter, top, skip, userState, continuationToken, null);
}
public virtual Task<IPagedList<TeamProjectReference>> GetProjects(ProjectState? stateFilter = null, int? top = null, int? skip = null, object userState = null, string continuationToken = null, **bool? getDefaultTeamImageUrl = null**)
{
List<KeyValuePair<string, string>> queryParams = new List<KeyValuePair<string, string>>();
QueryParamHelper.AddNonNullParam(queryParams, "stateFilter", stateFilter);
QueryParamHelper.AddNonNullParam(queryParams, "$top", top);
QueryParamHelper.AddNonNullParam(queryParams, "$skip", skip);
QueryParamHelper.AddNonNullParam(queryParams, "continuationToken", continuationToken);
QueryParamHelper.AddNonNullParam(queryParams, "getDefaultTeamImageUrl", getDefaultTeamImageUrl);
return GetProjectsAsync(queryParams, userState);
}
但是我们在官方网站上找不到带有 6 个参数的 GetProjects 方法:
因此,我建议您使用 5 个参数更改 GetProjects 方法:
var test = projectClient.GetProjects(null,3,1,null,null).Result;
这是测试结果:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.