Asp.net-Mvc

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

  • October 15, 2019

該錯誤非常古老,但 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.UnitTestingVS2010 上的 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)' == ''" />
<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)' == ''" />

這是根據官方的 microsoft dev 社區幫助執行緒here

雖然對我來說沒有用。必須在 ssdt 版本周圍添加屬性組標籤。您可能希望根據項目配置保留或刪除它。

引用自:https://stackoverflow.com/questions/44603822