所以我启用了这个组策略,并且第一次尝试编译我的解决方案时出现此错误。有趣的是,我只在一个地方使用加密功能,但我看到的是我的所有Silverlight ResourceDictionary文件和WPF userControl文件。其他一切似乎都可以正常编译。
为什么我只在xaml文件中看到错误,我对加密没有任何作用?我知道我可以禁用FIPS组策略,但我确实想支持它。知道为什么特定的XAML文件在编译期间抛出了这个错误吗?
答案 0 :(得分:4)
我知道我在游戏中有点迟了但我最近遇到了这个问题,并且找到了解决方案。由于@mdutra above所述的原因,这就是为什么它不起作用,但有趣的是,Visual Studio 2010和2012有两个不同的修复"。
此Microsoft Connect post声明:
Microsoft于2012年6月30日下午4:00发布:
VS 2012现在在运行msbuild的单独进程中构建C#项目。您添加到devenv.exe.config(适用于VS 2010)的条目不会被此过程看到。您应该添加相同的条目,即
<enforceFIPSPolicy enabled="false"/>
到msbuild的配置文件;通常在
找到
c:\Windows\Microsoft.Net\Framework\v4.0.30319\msbuild.exe.config
该行需要直接添加到</runtime>
文件中msbuild.exe.config
标记的上方。
我也将它添加到C:\Windows\Microsoft.Net\Framework64\v4.0.30319\msbuild.exe.config
文件中,因为我不知道我正在使用哪个MSBuild。
答案 1 :(得分:1)
经过一番研究后,我发现这个答案是有道理的:
以下是链接的内容,以防它被删除:
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