缺少Microsoft.Data.Tools.Schema.Sql.UnitTesting。再次

问题描述 投票:3回答:2

这个bug已经很老了,但到目前为止MS还没有解决它。

我有一个VS2015解决方案(许多项目,主要的ASP.NET一个),我在VS 2017中打开它。

这是我在尝试构建它时看到的内容:

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

版本错误,它的15.1.0.0而不是之前的15.0.0.0(对于这两个DLL)。很重要,你说,但它仍然无法编译:

它告诉我版本不匹配,我必须在web.config文件中创建一些程序集绑定。我做了,首先手动,然后通过双击警告,如它所示。没有改变。我仍然无法获得我的项目构建。

以前的SO问题(Automatic reference to Microsoft.Data.Tools.Schema.Sql.UnitTestingWhere is the Microsoft.VisualStudio.TestTools.UnitTesting namespace on VS2010?)没什么用,我无法删除SSDT组件,因为它完全打破了Web项目的加载。我的项目不是任何类型的SQL测试项目。它只是一个常规的ASP.NET 4 Web应用程序。

我该怎么做才能解决这个问题?

asp.net-mvc build-error vs-unit-testing-framework visual-studio-2017 sql-server-unit-testing
2个回答
2
投票

我搜索了项目的文件,发现了这个:

<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)' == ''" />

然后我在PC上搜索Microsoft.Data.Tools.Schema.Sql.UnitTesting.targets,我发现了一些有趣的结果(可点击):

所以,我以前的工作室,VS2015,有文件的v14版本,引用的也是14版本,这很好。

但根据文件内容,新的VS2017引用了15.0.0.0

但实际的文件夹,应该包含这些文件有15.1.0.0版本!而我的web.config文件中的绑定重定向只是由于某种原因不起作用。

我从这里看到两个解决方案,更改Microsoft.Data.Tools.Schema.Sql.UnitTesting.targets文件,使其包含15.1.0.0版本,或用15.0.0.0替换15.1.0.0。我现在会和前人一起去。马上更新。

更新

它仍然没有帮助。没有构建错误,但项目构建失败。

我还试图从项目的文件中删除这两个XML行,它有点工作。不太确定,因为它现在表现得更加奇怪。

它在somemethod(out Ticket ticket);(新的C#7功能)的一行上给了我一个奇怪的“缺失','”错误,这很好并且没有任何错误,错误本身在我看到它后1秒后消失了,但是当我把它切换回C#6方式,它最终都没有问题。我现在试着运行这个项目。

更新

是的,就像我想的那样,亲爱的微软。现在它给了我这个:

因此,我还有一些变化需要完成从vs2015到vs2017的简单webapp的手动升级。


2
投票

在测试项目文件中,删除此代码:

<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>

并将其替换为:

<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)' == ''" />

这是根据官方微软开发社区帮助线程here

虽然对我来说它没有用。不得不在ssdt版本周围添加propertygroup标签。您可能希望保留它或根据项目配置将其删除。

© www.soinside.com 2019 - 2024. All rights reserved.