我们的团队一直在研究一些UWP应用程序,最近在项目的任何Rebuild上更新了一些块包后,我们得到类似的错误:
File=MakePri: Processing Resources failed with error: Duplicate Entry.
File=MakePri: Conflicting values for resource 'ExceptionStringTable/NameScopeNameNotFound'
SO上有类似的问题,这些问题是由用户创建/管理的资源引起的,或者只是通过清理项目输出和/或重建来解决。
这与围绕MakePri和SO上的资源重复条目的其他问题不同,因为这些具有冲突的资源不是由我的任何应用程序代码提供或管理的。因此,我不能简单地删除代码中的重复条目。
问题是输出中有两个资源文件有重复的条目。请注意,它不是一个重复的文件,这两个文件中只有少数条目存在:
\obj\ARM\Debug\System.Xaml\en-US\ExceptionStringTable.resw
\obj\ARM\Debug\WindowsBase\en-US\ExceptionStringTable.resw
我的问题,VS ALM中是否有一种方法能够巧妙地忽略这些错误,或者在编译之前/期间修复重复的条目?此外,有没有其他人注意到这个问题,有没有更好的方法来解决它?我怀疑使用NuGet软件包版本可能会有所帮助,但在我花费更多时间用于此之前,我很想知道社群的其他人会说些什么。
事实证明,您不能简单地删除这些文件,如果您这样做,下一个版本会将它们放回去,但您可以做的是编辑文件以删除条目。然后文件将保留,直到项目输出被清除。
我不打算列出冲突,我们通过反复试验找到它们,然后经过一段时间的懒惰并从这些资源中删除了整个块。
此操作的后果是,现在如果引发异常且其消息字符串是我们不小心删除的资源之一,如果我还不熟悉,我必须google异常代码它。这让一些人习惯了:)
正如我所说,我怀疑NuGet包的版本可能是罪魁祸首。但我不确定System.Xaml.dll来自哪里。当然,在WindowsBase和XAML团队中作为MS的好人必须意识到这种冲突,并且我希望将来能够解决这个问题。这就是我寻找低成本解决方案的原因
WindowsBase: \.NETFramework\v4.6.1\WindowsBase.dll
PM> Install-Package Microsoft.NETCore.UniversalWindowsPlatform (v5.3.1)
我们当前的解决方案是将ExceptionStringTable.resw文件的XAML版本替换为我们之前编辑并保存回解决方案根目录的文件。这是一个我经常忘记的烦人过程。
有没有其他人经历过这个并找到了更好的解决方案?