1

我有一个Solution.dll方法来打开 SharePoint Online 命令行管理程序并执行此处提到的操作。当我这样做时,我有时会碰巧遇到异常,

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'.

问题是我Microsoft.Online.SharePoint.Client.Tenant.dll在我所在的同一目录中有一个旧版本Solution.dll。而且它没有SPOConditionalAccessPolicyType类。而 'C:\Program Files\SharePoint Online Management 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 路径。

4

2 回答 2

1

You can accomplish this by using a module manifest:

New-ModuleManifest -Path '.\MyManifest.psd1' -RequiredAssemblies 'C:\Program Files\SharePoint Online Management Shell\Microsoft.Online.SharePoint.PowerShell\Microsoft.Online.SharePoint.Client.Tenant.dll'

And then use Import-Module:

Import-Module -Name '.\MyManifest.psd1'
于 2018-04-24T12:45:07.670 回答
0

您可以简单地在 Powershell 中编写以下内容。

[System.Reflection.Assembly]::LoadFrom("PATH TO ASSEMBLY")

请参阅 Microsoft msdn.microsoft.com的这篇文章并查看 Load 方法

于 2018-04-24T13:08:07.327 回答