4

所以我启用了这个组策略,当我第一次尝试编译我的解决方案时,我得到了这个错误。有趣的是,我只在一个地方使用加密功能,但我看到的是我所有的 Silverlight ResourceDictionary 文件和 WPF userControl 文件。其他一切似乎都编译得很好。

为什么我只在我对加密什么都不做的 xaml 文件上看到错误?我知道我可以禁用 FIPS 组策略,但我确实想支持它。知道为什么特定的 XAML 文件在编译期间会抛出此错误吗?

4

2 回答 2

4

我知道我玩游戏有点晚了,但我最近遇到了这个问题并且也找到了解决方案。由于上述@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。

于 2015-07-01T16:39:07.243 回答
1

经过一些研究,我发现这个答案很有意义:

WPF 和 FIPS

以下是链接的内容,以防万一它被删除:

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
于 2012-04-17T11:56:18.417 回答