使用VSTS的WPF警告:为'*.g.cs'文件指定了不同的校验和值

ras*_*asx 6 wpf xaml visual-studio-2008

在Visual Studio 2008 Team System中,这是我的警告:

Different checksum values given for '<some folder>' ...\Visual Studio 2008\Projects\...
\Debug\...\SomeFile.g.cs
Run Code Online (Sandbox Code Playgroud)

SomeFile.g.cs文件中的违规行是:

#pragma checksum "..\..\..\..\..\..\...\SomeFile.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "A18BC47B27EC4695C69B69F1831E3225"
Run Code Online (Sandbox Code Playgroud)

我删除了所有的的*.g.cs文件,在解决方案和重建,所有的警告回来了.这到底是什么?

Ben*_*ier 11

看起来Visual Studio在生成GUID时无法正确处理非常长的路径.我通过在长路径中添加两个不同的文件来确认这一点,并重现了您所看到的行为.如果您查看有问题的SomeFile.g.cs文件,您会注意到两个文件的guid是相同的.显然,Visual Studio仅在生成此GUID时检查文件路径的前x个字符.

C:\Users\Developer\Documents\Visual Studio 2008\Projects\WpfApplication1\WpfApplication1\obj\Debug\LongFolderNameLongFolderNameLongFolderName\LongFolderNameLongFolderNameLongFolderName\LongFolderNameLongFolderNameLongFolderName\SomeFileName1.g.cs(1,1): warning CS1697: Different checksum values given for 'c:\Users\Developer\Documents\Visual Studio 2008\Projects\WpfApplication1\WpfApplication1\LongFolderNameLo'
C:\Users\Developer\Documents\Visual Studio 2008\Projects\WpfApplication1\WpfApplication1\obj\Debug\LongFolderNameLongFolderNameLongFolderName\LongFolderNameLongFolderNameLongFolderName\LongFolderNameLongFolderNameLongFolderName\SomeFileName2.g.cs(1,1): (Related location)
Run Code Online (Sandbox Code Playgroud)

来自.g.cs文件:

#pragma checksum "..\<snipped>\SomeFileName1.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "F21D94943016E57893CEB405BE12ADEA"
#pragma checksum "..\<snipped>\SomeFileName2.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "C67F2F8C841E2C338E5FCDC5037E8454"
Run Code Online (Sandbox Code Playgroud)

至于解决方案,我想你可以缩短你的路径或者(更有可能)忽略这些警告.:)