所以我启用了这个组策略,当我第一次尝试编译我的解决方案时,我得到了这个错误。有趣的是,我只在一个地方使用加密功能,但我看到的是我所有的 Silverlight ResourceDictionary 文件和 WPF userControl 文件。其他一切似乎都编译得很好。
为什么我只在我对加密什么都不做的 xaml 文件上看到错误?我知道我可以禁用 FIPS 组策略,但我确实想支持它。知道为什么特定的 XAML 文件在编译期间会抛出此错误吗?
所以我启用了这个组策略,当我第一次尝试编译我的解决方案时,我得到了这个错误。有趣的是,我只在一个地方使用加密功能,但我看到的是我所有的 Silverlight ResourceDictionary 文件和 WPF userControl 文件。其他一切似乎都编译得很好。
为什么我只在我对加密什么都不做的 xaml 文件上看到错误?我知道我可以禁用 FIPS 组策略,但我确实想支持它。知道为什么特定的 XAML 文件在编译期间会抛出此错误吗?
我知道我玩游戏有点晚了,但我最近遇到了这个问题并且也找到了解决方案。由于上述@mdutra 所述的原因,这就是它不起作用的原因,但有趣的是,Visual Studio 2010 和 2012 有两个不同的“修复”。
Microsoft Connect 帖子(不再存在)指出:
Visual Studio 2012 现在在运行 msbuild 的单独进程中构建 C# 项目。此过程不会看到您添加到 devenv.exe.config 的条目(适用于 VS 2010)。您应该
<enforceFIPSPolicy enabled="false"/>
直接</runtime>
在 msbuild.exe.config 文件中的标记上方添加;通常在C:\Windows\Microsoft.Net\Framework\v4.0.30319\msbuild.exe.config
.
我也将它添加到C:\Windows\Microsoft.Net\Framework64\v4.0.30319\msbuild.exe.config
文件中,因为我不知道我使用的是哪个 MSBuild。
经过一些研究,我发现这个答案很有意义:
以下是链接的内容,以防万一它被删除:
The following is the reply I got from the WPF XAML team:
We didn’t fix it because this issue was discovered days (June 2, 2008) before the release.
I still have the BBPack I didn’t checkin. Here is the comment from the code.
// The Federal Information Processing Standard mandates that
// MD5 is obsolete and not safe for cryptographic checksums.
// We are using it to coordinating source files for debugging
// not authenticating so MD5 use is OK here.
// But, on a OS with the FIPS compliant switch ON, the managed
// MD5CryptoServiceProvider Ctor will throw. So we can't use it.
//
// Currently we use a PInvoke wrapper to the Native layer;
// which still works, even on a FIPS compliant machine. A Better
// fix would be to move to the approved SHA checksums, but that
// will require co-ordination with VS and the Debugger groups etc.
The MSI builder and a few other tools also threw on a FIPS=1 machine.
So even we if we fixed our part (in 3.5sp1), the customer’s end-to-end solution was still broken.
General FIPS info:
http://support.microsoft.com/kb/811833/en-us