我有一个Solution.dll,它具有打开SharePoint Online命令行管理程序并执行上述here操作的方法。当我这样做时,我有时碰巧得到异常,
Could not load type 'Microsoft.Online.SharePoint.TenantManagement.SPOConditionalAccessPolicyType' from assembly 'Microsoft.Online.SharePoint.Client.Tenant, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c'.问题是我在我的Solution.dll所在的目录中有一个旧版本的Microsoft.Online.SharePoint.Client.Tenant.dll。并且它没有SPOConditionalAccessPolicyType类。而“C:\Program Files\SharePoint Shell\Microsoft.Online.SharePoint.PowerShell\Microsoft.Online.SharePoint.Client.Tenant.dll‘”中有这个类。
因此,当我想要访问联机命令行管理程序时,我希望解决方案是加载“联机命令行管理程序”文件夹中的租户dll,而不是加载我的项目文件夹中的dll。
尝试给出以下内容,
InitialSessionState iss = InitialSessionState.CreateDefault();
iss.ImportPSModule(new string[2] { "C:\\Program Files\\SharePoint Online Management Shell\\Microsoft.Online.SharePoint.PowerShell\\Microsoft.Online.SharePoint.PowerShell.dll",
"C:\\Program Files\\SharePoint Online Management Shell\\Microsoft.Online.SharePoint.PowerShell\\Microsoft.Online.SharePoint.Client.Tenant.dll" });但没那么走运。仍然会得到“无法加载类型...”错误。
删除旧版本的dll可能不是我的解决方案,因为我需要它用于不同的目的。如何指定所需的dll路径,无论程序集是否存在,都应始终加载该路径。
发布于 2018-04-24 20:45:08
您可以通过使用模块清单来完成此操作:
New-ModuleManifest -Path '.\MyManifest.psd1' -RequiredAssemblies 'C:\Program Files\SharePoint Online Management Shell\Microsoft.Online.SharePoint.PowerShell\Microsoft.Online.SharePoint.Client.Tenant.dll'然后使用Import-Module
Import-Module -Name '.\MyManifest.psd1'发布于 2018-04-24 21:08:07
您可以简单地在Powershell中编写以下代码。
[System.Reflection.Assembly]::LoadFrom("PATH TO ASSEMBLY")请参考这篇来自Microsoft msdn.microsoft.com的文章,看看加载方法。
https://stackoverflow.com/questions/50000610
复制相似问题