2017-01-24 49 views
5

Mam standardowy projekt VSIX, biorąc zależność projektu od projektu biblioteki klas w tym samym rozwiązaniu. Wszystko zaczęło się dobrze, dopóki nie przełączyłem biblioteki klas na nowy uproszczony csproj VS2017RC. Biblioteka klasy buduje w porządku (mój DotNet SDK 1.0.0-preview4-004233), ale gdy próbuje zbudować VSIX uzyskać:Brakujące "BuiltProjectOutputGroupDependencies" budynek VSIX w zależności od nowego uproszczonego csproj

error MSB4057: The target "BuiltProjectOutputGroupDependencies" does not exist in the project. 

To oczywiście wygląda niezgodności z tradycyjnym VSIX csproj oczekują czegoś od zależne projekty, których nowy csproj nie zapewnia.

Czy ktoś wpadł na to lub miał jakieś rady dotyczące obejścia go? Zajmę się usunięciem odniesienia do projektu i ręcznym odniesieniem do wyjściowej biblioteki DLL.

W powiązanej notatce bocznej nie jest jasne, która wyjściowa biblioteka DLL VSIX wybierze z biblioteki klas, ponieważ nowy csproj obsługuje wiele docelowych struktur.

Odpowiedz

0

Wydaje mi się, że możesz napotkać ten sam problem, który miałem, gdy próbowałem odwołać się do mojego rozszerzenia Visual Studio z biblioteki .NET Standard, która była ukierunkowana na wiele frameworków. Istnieje kwestia GitHub o numerze dotnet/sdk#433.

Co musiałem zrobić, to usunąć pozostałe cele. W moim przypadku, miałem:

<Project Sdk="Microsoft.NET.Sdk"> 
    <PropertyGroup> 
     <TargetFrameworks>netstandard1.3;net46</TargetFrameworks> 
    </PropertyGroup>  
    ... 
</Project> 

I musiałem zmodyfikować go jedynym celem netstandard1.3 (ponieważ jest on zgodny z .NET 4.6 według .NET Standard chart) i moje cele VSIX .NET 4.6.

<Project Sdk="Microsoft.NET.Sdk"> 
    <PropertyGroup> 
     <TargetFramework>netstandard1.3</TargetFramework> 
    </PropertyGroup> 
    ... 
</Project> 
4

Jak stwierdzono on the GitHub issue, tutaj jest obejście:

  1. Unload projekt VSIX.
  2. Kliknij prawym przyciskiem myszy i edytuj jego plik .csproj.
  3. Znajdź <ProjectReference> dla projektu, który zaczął powodować problem.
  4. Dodaj element <AdditionalProperties>TargetFramework=net452</AdditionalProperties>, używając poprawnej wersji systemu .NET Framework, którą kierujesz do projektu, do którego się odwołuje.
  5. Przeładuj i odbuduj oprogramowanie VSIX.
+0

To jest naprawdę rozwiązanie. – Shrike