C# 将解决方案从VS2013移动到VS2015与加密有关的问题?

C# 将解决方案从VS2013移动到VS2015与加密有关的问题?,c#,visual-studio-2013,visual-studio-2015,C#,Visual Studio 2013,Visual Studio 2015,我有一个相对较大的WinForms应用程序,它是在Visual Studio 2013下开发的。我最近在另一台计算机上升级到VisualStudio2015,并一直在尝试让项目在它下工作 我的第一个问题/担忧是,当我第一次在Visual Studio 2015中打开项目时,它并没有要求我将解决方案“升级”到Visual Studio 2015,而是很高兴地打开了解决方案。我习惯于让Visual Studio要求“升级”解决方案,并创建一个新的.sln文件,该文件被识别为Visual Studio

我有一个相对较大的WinForms应用程序,它是在Visual Studio 2013下开发的。我最近在另一台计算机上升级到VisualStudio2015,并一直在尝试让项目在它下工作

我的第一个问题/担忧是,当我第一次在Visual Studio 2015中打开项目时,它并没有要求我将解决方案“升级”到Visual Studio 2015,而是很高兴地打开了解决方案。我习惯于让Visual Studio要求“升级”解决方案,并创建一个新的
.sln
文件,该文件被识别为Visual Studio 2013解决方案,而不是旧的VS10解决方案

我面临的实际问题是大约10个似乎与加密有关的错误。从我可以猜到这与解决方案本身以及microsoft在后台对它所做的事情有关,因为我在项目中使用的加密最多的是生成
Guid

错误的图像

另一个问题是,由于我不习惯,我不能双击错误本身,从而导致Visual Studio认为它们正在发生的地方。因此,我不确定是什么产生了它们,也不确定从这里走向何方

有什么建议吗


这是在旧款联想Thinkpad上安装的Windows 7。我也没有这台计算机的管理员权限


编辑:到目前为止,我已尝试在
C\Program Files(x86)\Microsoft Visual Studio 14.0\Common7\IDE\Devenv.exe.config
中的Visual Studio 15设置文件中添加
,但每当我尝试编辑它时(即使重新启动后),另一个程序“始终”打开该文件。因此,我似乎无法编辑该文件以关闭VisualStudio15的FIPS

我仍然愿意接受建议或线索

EDIT2:我已经在它的帮助下(使用)成功地将
导入IDE设置。虽然这似乎毫无作用,但似乎被忽视了

这里的另一个问题/线索是,即使我在VisualStudio中创建了一个全新的C#项目,当我尝试编译时,也会收到相同的错误。因此,我必须假设VisualStudio正在“后台”的某个地方使用SHA256类。如果我能控制它的使用,我会尝试实现下面@Kevin的答案

我在网上找到了另一个,尽管我不确定它的有效性

VS 2012现在在运行的单独流程中构建C#项目 msbuild。添加到devenv.exe.config的条目(适用于VS 2010)将不会被此过程看到。您应该添加相同的条目, 即 到msbuild的配置文件;通常在 c:\Windows\Microsoft.Net\Framework\v4.0.30319\msbuild.exe.config”


当我有时间处理.NET 4.5+
msbuild.exe.config文件时,我将尝试完成此操作,并返回报告。

您不能双击错误并让它转到抛出错误的位置,因为它是在SHA256类中抛出的。如果设置了FIPS符合性位,则任何不符合FIPS的.NET加密类抛出这个错误

您有两个选择来修复此问题

首先,您可以在尝试运行应用程序的计算机上关闭FIPS合规性位(不推荐)


否则,您可以更新代码以使用符合FIPS的SHA256版本(SHA256CryptoServiceProvider)。这将需要.NET Framework 3.5或更高版本。

我使用的解决方案是

被添加到一些文件中,即

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

尽管我认为真正让它起作用的是第一个文件。

你是说Visual Studio 2015还是VS15?它们是不同的产品。VS15是目前只能作为预览使用的产品。我怀疑你是指Visual Studio 2015…自VS 2012以来,解决方案和项目文件一直向后兼容,因此没有必要“升级”它。保存后,它可能会修改文件以添加一些元数据,但通常它们是完全可互换的。哦,我从来没有意识到有什么不同。是的“VS15”,moveover“VS”应该读作“Visual Studio”“错误在消息中很明显。如果你已经发布了实际的文本,我可以引用它-这就是为什么不使用它images@stuartd我通常会把它们打印出来。但是好。。这对我来说有点困难。我对你们提供的第二种解决方案感到困惑。该机器最多安装了.NET 4.6.1,而项目本身的目标是.NET 4.5。我假设我已经在使用.NET 3.5或更高版本了就第一个解决方案而言,您的意思是告诉Visual Studio忽略该问题(如本SO答案中所述)还是完全关闭整个机器上的FIPS合规性(我不知道该怎么做)?第一个解决方案告诉操作系统不要首先引发错误(您允许执行不使用NIST认证为FIPS兼容的算法的加密类)。不建议这样做。第二种解决方案是告诉您停止使用SHA256类(该类未经NIST认证为FIPS兼容)相反,请使用符合NIST认证的FIPS的SHA256CryptoServiceProvider类。我提到框架3.5的原因是当FIPS兼容类在.NET Framework中可用时。作为补充说明,SHA256CryptoServiceProvider类本身未经认证,它是Windows CryptoAPI的包装,而Windows CryptoAPI是Windows操作系统上唯一一套符合NIST认证的FIPS 140-2加密算法。没错,第一个解决方案不是一个选项。虽然第二个解决方案我不是使用SHA类的人,但它似乎是Visual Studio的后台。如果我创建一个全新的C#项目,它将不会由于相同的错误而编译从那以后,我不得不假设它是Visual Studio,但我不知道在哪里//我可以替换apar使用的算法吗