0

我有一个 Dynamics365 DevVM 并将其从 10PU26 更新到 10PU28,以便我在与我正在开发的系统相同的平台版本上进行开发。应用 10pu28 后,我启动了我的 VisualStudio,更改了一些内容并尝试保存和编译,但注意到 BP 已损坏,因此我无法进一步开发。Visual Studio 记录以下内容,但我不确定我能做些什么来解决这个问题。

Build started 07/25/2019 06:27.
Build step: Metadata validation started.
  Exception occured while performing operation Validate Metadata. Exception details: Path: []:System.ArgumentNullException: Value cannot be null.
Parameter name: source
   at System.Linq.Enumerable.Contains[TSource](IEnumerable`1 source, TSource value, IEqualityComparer`1 comparer)
   at Microsoft.Dynamics.Framework.Tools.ILGeneratorAgent.CompilationService.ValidateMetadata(String module, String metadataPath, String compilerMetadataPath, IEnumerable`1 referencedAssembliesFolders, IEnumerable`1 elements)
Build step: Metadata validation completed (10 ms).
Build step: X++ compilation, label generation and resource deployment started.
Build step: X++ compilation, label generation and resource deployment completed (670 ms).
Build step: Best practice check started.
  Exception occured while performing operation Best practice checks. Exception details: BP Rule: [Exception occured while performing operation Best practice checks. Exception details]:System.ArgumentNullException: Value cannot be null.
Parameter name: referencedAssembliesFolders
   at Microsoft.Dynamics.Framework.Tools.ILGeneratorAgent.MetadataProviderExtensions.AddReferenceProvider(IMetadataProvider provider, IEnumerable`1 referencedAssembliesFolders, IDiagnosticSink diagnostics, String modelModule, MetadataProviderFactory factory)
   at Microsoft.Dynamics.Framework.Tools.ILGeneratorAgent.CompilationService.RunBestPracticeChecks(String module, String metadataPath, String compilerMetadataPath, IEnumerable`1 referencedAssembliesFolders, IEnumerable`1 elements, String modelName, Boolean isNormalizedCollectionNeeded)
Build step: Best practice check completed (9 ms).
Build completed (716 ms).

作为临时解决方法,我尝试在构建时禁用正在运行的 BP,但这也不起作用。当 BP 被禁用时,我仍然无法编译。以下是日志:

Build started 07/25/2019 06:40.
Build step: Metadata validation started.
  Exception occured while performing operation Validate Metadata. Exception details: Path: []:System.ArgumentNullException: Value cannot be null.
Parameter name: source
   at System.Linq.Enumerable.Contains[TSource](IEnumerable`1 source, TSource value, IEqualityComparer`1 comparer)
   at Microsoft.Dynamics.Framework.Tools.ILGeneratorAgent.CompilationService.ValidateMetadata(String module, String metadataPath, String compilerMetadataPath, IEnumerable`1 referencedAssembliesFolders, IEnumerable`1 elements)
Build step: Metadata validation completed (8 ms).
Build step: X++ compilation, label generation and resource deployment started.
Build step: X++ compilation, label generation and resource deployment completed (381 ms).
Build completed (409 ms).
4

1 回答 1

1

如果更新未成功更新所有组件,则可能会导致此问题。如果使用默认拓扑文件进行更新,则可能会导致此问题。Microsoft的文档在更新过程的这一部分有点混乱(请参阅问题 1137)。确保根据文档中的收集拓扑配置数据部分更改拓扑文件。

我还建议查看d365fo.tools,其中包括函数Invoke-D365SDPInstall,它在升级过程中为您完成了大量工作(包括拓扑文件的更新)。

于 2019-07-30T08:47:45.337 回答