Мы подключаемся к Dynamics 365 CRM с помощью следующего кода в простом консольном приложении, ориентированном на .NET 4.5.2.
private static void Main(string[] args)
{
RetrieveAllEntitiesRequest req2 = new RetrieveAllEntitiesRequest();
req2.EntityFilters = Microsoft.Xrm.Sdk.Metadata.EntityFilters.Entity;
CrmServiceClient conn = new CrmServiceClient(
"svccrm@contoso.com",
CrmServiceClient.MakeSecureString("secret"),
"EMEA", "contoso",
useUniqueInstance: true,
useSsl: true, isOffice365: true);
try
{
//error with target framework 4.5.2
var resp2 = conn.Execute(req2) as RetrieveAllEntitiesResponse;
}
catch
{
string lastError = conn.LastCrmError;
}
}
Следующие пакеты nuget находятся в packages.config
<package id="Microsoft.CrmSdk.CoreAssemblies" version="9.0.2.5" targetFramework="net452" />
<package id="Microsoft.CrmSdk.Deployment" version="9.0.2.4" targetFramework="net452" />
<package id="Microsoft.CrmSdk.Workflow" version="9.0.2.4" targetFramework="net452" />
<package id="Microsoft.CrmSdk.XrmTooling.CoreAssembly" version="9.0.2.7" targetFramework="net452" />
<package id="Microsoft.IdentityModel.Clients.ActiveDirectory" version="2.22.302111727" targetFramework="net452" />
<package id="Newtonsoft.Json" version="6.0.8" targetFramework="net452" />
Когда я запускаю этот код, я получаю исключение NullReferenceException в
Microsoft.Xrm.Tooling.Connector.CrmServiceClient.Execute (запрос OrganizationRequest) с ошибкой LastCrmError
Невозможно войти в Dynamics CRM ************ Исключение - RetrieveAllEntities: Выполнить (RetrieveAllEntities) запрос к CRM из IOrganizationService | => Ссылка на объект не установлена для экземпляра объекта.
Как только я изменяю целевой Framework на 4.6.2, он работает просто отлично. Дело в том, что мы размещаем этот код в пакете служб интеграции SQL Server, и по какой-то причине в Windows 2016 SSIS всегда возвращается к платформе 4.5.2.
Мы также исследуем это, но на данный момент остается вопрос, должен ли пакет Microsoft.CrmSdk.XrmTooling.CoreAssembly работать с 4.5.2 (readme nuget сообщает yes) или если это ошибка в SDK .
Последние версии .NET 4.7.X были установлены на сервере 2016 года и на моей машине win 10 dev, хотя обе они сталкиваются с одной и той же проблемой.