我有一个相对较大的WinForms应用程序,它是在Visual Studio 2013下开发的。我最近在另一台计算机上升级到Visual Studio 2015,并且一直在努力让项目在它下运行。
我的第一个问题是,当我第一次在Visual Studio 2015中打开项目时,它并没有要求我将解决方案“升级”到Visual Studio 2015,它很高兴只是打开解决方案。我习惯让Visual Studio要求“升级”解决方案并创建一个新的.sln
文件,该文件被识别为例如Visual Studio 2013解决方案而不是旧的VS10解决方案。
我面临的实际问题是~10个似乎与加密相关的错误。根据我的猜测,这与解决方案本身以及微软在后台使用的内容有关,因为我在项目中使用的密码术生成Guid
。
我遇到的另一个问题是,由于我不习惯,我不能双击自己的错误,导致Visual Studio认为它们正在发生的地方。因此,我不确定是什么产生它们或从哪里开始。
有什么建议吗?
这是旧型号Lenovo Thinkpad上的Windows 7安装。我也没有这台电脑的管理员权限。
编辑:到目前为止,我尝试将<enforceFIPSPolicy enabled="false"/>
添加到C\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Devenv.exe.config
的Visual Studio 15设置文件中,但每当我尝试编辑它时(即使是在新鲜之后)重启)该文件由其他程序“始终”打开。因此,我似乎无法编辑该文件以关闭Visual Studio 15的FIPS。
我仍然愿意接受建议或线索。
EDIT2 :我已经在IT的帮助下(使用this article)成功地将<enforceFIPSPolicy enabled="false"/>
置于IDE设置中。虽然这似乎绝对没有,但它似乎被忽略了。
另一个问题/线索是,即使我在Visual Studio中创建一个全新的C#项目,当我尝试编译时,我收到相同的错误。所以我必须假设Visual Studio在“后台”某处使用SHA256类。如果我确实控制了它的用法,我会尝试在下面实现@Kevin的答案。
我在网上找到了另一个possible solution,但我不确定其有效性
VS 2012现在在一个运行的单独进程中构建C#项目 MSBuild的。您添加到devenv.exe.config的条目(适用于VS. 这个过程不会看到2010)。你应该添加相同的条目, 亦即 到msbuild的配置文件;通常是在 C:\的Windows \ Microsoft.Net \框架\ v4.0.30319 \ msbuild.exe.config“
当我有时间使用.NET 4.5+ msbuild.exe.config
文件并报告时,我会尝试完成此操作。
答案 0 :(得分:2)
我使用的解决方案是outline here。
<enforceFIPSPolicy enabled="false"/>
已添加到几个文件中,即
C:\Program Files (x86)\MSBuild\12.0\Bin\msbuild.exe.config
C:\Windows\Microsoft.Net\Framework\v4.0.30319\msbuild.exe.config
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Devenv.exe.config
虽然我认为真正实现它的是第一个文件。
答案 1 :(得分:-1)
您无法双击错误并将其转到错误被抛出的位置,因为它被抛入SHA256类。如果设置了FIPS合规性位,则任何符合非FIPS标准的.NET加密类都会抛出此错误。
你有两个选择来解决这个问题......
首先,您可以在尝试运行应用程序的计算机上关闭FIPS合规性位(不推荐)。
否则,您可以更新代码以使用符合FIPS标准的SHA256版本(SHA256CryptoServiceProvider)。这将需要.NET Framework 3.5或更高版本。