Неизвестная ошибка сборки "Данная реализация не является частью проверенных криптографических алгоритмов FIPS платформы Windows"
Поэтому я включил эту групповую политику, и при первой попытке компилировать свое решение я получил эту ошибку. Самое смешное, что я использую криптографическую функцию только в одном месте, но я вижу все мои файлы Silverlight ResourceDictionary и WPF userControl. Все остальное вроде компилируется нормально.
Почему я вижу ошибку только в файлах xaml, где я ничего не делаю с шифрованием? Я знаю, что могу отключить групповую политику FIPS, но хочу ее поддерживать. Любая идея, почему определенные файлы XAML выдают эту ошибку во время компиляции?
2 ответа
После некоторого исследования я нашел этот ответ, который имеет смысл:
Вот содержание ссылки на случай, если она будет удалена:
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
Я знаю, что немного опоздал на игру, но недавно я столкнулся с этой проблемой и также нашел решение. По причинам, указанным @mdutra выше, именно поэтому это не работает, но интересно, что Visual Studio 2010 и 2012 имеют два разных "исправления".
Эта запись Microsoft Connect гласит:
Сообщение от Microsoft 6/30/2012 в 16:00:
VS 2012 теперь строит проекты на C# в отдельном процессе, который запускает msbuild. Запись, которую вы добавили в 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 я использовал.