Age*_*ire 6 asp.net-mvc build-error vs-unit-testing-framework visual-studio-2017 sql-server-unit-testing
该错误很旧,但 MS 到目前为止还没有修复它。
我有一个 VS2015 解决方案(许多项目,主要是 ASP.NET 一个),我在 VS 2017 中打开了它。
这是我尝试构建它时看到的:

所以,我想,好吧,有些引用坏了,我进入了项目引用,删除了这两个(...Sql.UnitTesting 和 ...Tools.Components),并尝试将它们添加回来。我看到了什么?当然,这个:

版本错误,它是15.1.0.0而不是之前的15.0.0.0(对于两个 DLL)。大不了,你说,但它仍然不能编译:

它告诉我版本不匹配,我必须在 web.config 文件中创建一些程序集绑定。我做了,首先手动,然后通过双击警告,正如它所建议的那样。什么都没有改变。我仍然无法构建我的项目。
以前的 SO 问题(对 Microsoft.Data.Tools.Schema.Sql.UnitTesting 的自动引用,VS2010 上的 Microsoft.VisualStudio.TestTools.UnitTesting 命名空间在哪里?)没有多大帮助,我无法删除 SSDT 组件,因为它破坏了完全加载网络项目。而我的项目不是任何类型的 SQL 测试项目。它只是一个普通的 ASP.NET 4 Web 应用程序。
我能做些什么来解决这个问题?
我搜索了该项目的文件并发现了这个:
<Import Project="$(SQLDBExtensionsRefPath)\Microsoft.Data.Tools.Schema.Sql.UnitTesting.targets" Condition="'$(SQLDBExtensionsRefPath)' != ''" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\SSDT\Microsoft.Data.Tools.Schema.Sql.UnitTesting.targets" Condition="'$(SQLDBExtensionsRefPath)' == ''" />
Run Code Online (Sandbox Code Playgroud)
然后我在电脑上搜索Microsoft.Data.Tools.Schema.Sql.UnitTesting.targets,发现了一些有趣的结果(可点击):
所以,我之前的工作室,VS2015,有v14该文件的版本,引用的也是14版本,这很好。
15.0.0.0但根据文件内容,新的 VS2017 引用了:
但实际的文件夹,其中应该包含这些文件有15.1.0.0版本!我的绑定重定向web.config不起作用。
我从这里看到两个解决方案,更改Microsoft.Data.Tools.Schema.Sql.UnitTesting.targets文件,使其包含 15.1.0.0 版本,或将 15.1.0.0 替换为 15.0.0.0 版本。我现在就选择前者。很快更新。
但这仍然没有帮助。不,没有构建错误,但项目构建失败。
我还尝试从项目文件中删除这两行 XML 行,它有点起作用。不太确定,因为它现在的行为更加奇怪。
它给了我一个奇怪的“missing ','”错误somemethod(out Ticket ticket);(新的 C#7 功能),这很好并且没有任何错误,错误本身消失了我看到它后 1 秒后就,但是当我将其切换回 C#6 方式,最终一切顺利构建。我现在将尝试运行该项目。
是的,正如我所想,亲爱的微软。现在它给了我这个:
因此,我还需要进行一些更改才能完成将一个简单的 Web 应用程序从 vs2015 手动升级到 vs2017。
小智 5
在您的测试项目文件中,删除以下代码:
<Import Project="$(SQLDBExtensionsRefPath)\Microsoft.Data.Tools.Schema.Sql.UnitTesting.targets" Condition="'$(SQLDBExtensionsRefPath)' != ''" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\SSDT\Microsoft.Data.Tools.Schema.Sql.UnitTesting.targets" Condition="'$(SQLDBExtensionsRefPath)' == ''" />
<PropertyGroup>
<SsdtUnitTestVersion>2.0</SsdtUnitTestVersion>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
并将其替换为:
<ItemGroup Condition="$(VisualStudioVersion) == '15.0'">
<Reference Include="Microsoft.Data.Tools.Schema.Sql, Version=13.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>$(SSDTPath)\Microsoft.Data.Tools.Schema.Sql.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.Data.Tools.Schema.Sql.UnitTesting, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>$(SSDTUnitTestPath)\Microsoft.Data.Tools.Schema.Sql.UnitTesting.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.Data.Tools.Schema.Sql.UnitTestingAdapter, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>$(SSDTUnitTestPath)\Microsoft.Data.Tools.Schema.Sql.UnitTestingAdapter.dll</HintPath>
<Private>True</Private>
</Reference>
</ItemGroup>
<PropertyGroup>
<SsdtUnitTestVersion>3.1</SsdtUnitTestVersion>
</PropertyGroup>
<Import Project="$(SQLDBExtensionsRefPath)\Microsoft.Data.Tools.Schema.Sql.UnitTesting.targets" Condition="$(VisualStudioVersion) != '15.0' And '$(SQLDBExtensionsRefPath)' != ''" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\SSDT\Microsoft.Data.Tools.Schema.Sql.UnitTesting.targets" Condition="$(VisualStudioVersion) != '15.0' And '$(SQLDBExtensionsRefPath)' == ''" />
Run Code Online (Sandbox Code Playgroud)
这是根据此处的官方微软开发社区帮助主题。
虽然对我来说没有用。必须在 ssdt 版本周围添加属性组标签。您可能希望根据您的项目配置保留或删除它。
| 归档时间: |
|
| 查看次数: |
9612 次 |
| 最近记录: |