Пакет Visual Studio (vsix) - Team City без установленной Visual Studio

Я создаю пакет Visual Studio (vsix) (бесстыдный плагин: pMixins) и хочу создать пакет vsix с использованием сервера непрерывной интеграции TeamCity. TeamCity использует MSBuild в фоновом режиме.

Мне удобно устанавливать Visual Studio SDK на моем агенте сборки, но я не хочу устанавливать полную версию Visual Studio. Когда я запускаю установщик Visual Studio SDK, он жалуется, что Visual Studio отсутствует.

How can I use MSBuild (via TeamCity) to build my vsix without having to install Visual Studio?

Я скопировал поверх C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\VSSDK\Microsoft.VsSDK.targets Файл целей, но теперь я застрял на том, как установить необходимые сборки:

    [MSBuild output] (ResolveAssemblyReferences target) ->
        [22:25:37][MSBuild output] C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1605,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "extensibility". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. [D:\BuildServer\TeamCity_Agent\work\d059d781c29b14d2\pMixins.VSPackage\pMixins.VSPackage.csproj.teamcity]
        [22:25:37][MSBuild output] C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1605,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "Microsoft.VisualStudio.Designer.Interfaces". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. [D:\BuildServer\TeamCity_Agent\work\d059d781c29b14d2\pMixins.VSPackage\pMixins.VSPackage.csproj.teamcity]
        [22:25:37][MSBuild output] C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1605,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "Microsoft.VisualStudio.OLE.Interop". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. [D:\BuildServer\TeamCity_Agent\work\d059d781c29b14d2\pMixins.VSPackage\pMixins.VSPackage.csproj.teamcity]
        [22:25:37][MSBuild output] C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1605,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "Microsoft.VisualStudio.Shell.Interop". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. [D:\BuildServer\TeamCity_Agent\work\d059d781c29b14d2\pMixins.VSPackage\pMixins.VSPackage.csproj.teamcity]
        [22:25:37][MSBuild output] C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1605,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "Microsoft.VisualStudio.Shell.Interop.8.0". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. [D:\BuildServer\TeamCity_Agent\work\d059d781c29b14d2\pMixins.VSPackage\pMixins.VSPackage.csproj.teamcity]
        [22:25:37][MSBuild output] C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1605,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "Microsoft.VisualStudio.Shell.Interop.9.0". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. [D:\BuildServer\TeamCity_Agent\work\d059d781c29b14d2\pMixins.VSPackage\pMixins.VSPackage.csproj.teamcity]
        [22:25:37][MSBuild output] C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1605,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "Microsoft.VisualStudio.Shell.Interop.10.0". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. [D:\BuildServer\TeamCity_Agent\work\d059d781c29b14d2\pMixins.VSPackage\pMixins.VSPackage.csproj.teamcity]
        [22:25:37][MSBuild output] C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1605,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "Microsoft.VisualStudio.Shell.Interop.11.0". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. [D:\BuildServer\TeamCity_Agent\work\d059d781c29b14d2\pMixins.VSPackage\pMixins.VSPackage.csproj.teamcity]
        [22:25:37][MSBuild output] C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1605,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "Microsoft.VisualStudio.TextManager.Interop". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. [D:\BuildServer\TeamCity_Agent\work\d059d781c29b14d2\pMixins.VSPackage\pMixins.VSPackage.csproj.teamcity]
        [22:25:37][MSBuild output] C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1605,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "Microsoft.VisualStudio.Shell.11.0". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. [D:\BuildServer\TeamCity_Agent\work\d059d781c29b14d2\pMixins.VSPackage\pMixins.VSPackage.csproj.teamcity]
        [22:25:37][MSBuild output] C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1605,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "Microsoft.VisualStudio.Shell.Immutable.10.0". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. [D:\BuildServer\TeamCity_Agent\work\d059d781c29b14d2\pMixins.VSPackage\pMixins.VSPackage.csproj.teamcity]
        [22:25:37][MSBuild output] C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1605,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "Microsoft.VisualStudio.Shell.Immutable.11.0". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. [D:\BuildServer\TeamCity_Agent\work\d059d781c29b14d2\pMixins.VSPackage\pMixins.VSPackage.csproj.teamcity]
        [22:25:37][MSBuild output] C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1605,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "VSLangProj, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. [D:\BuildServer\TeamCity_Agent\work\d059d781c29b14d2\pMixins.VSPackage\pMixins.VSPackage.csproj.teamcity]
        [22:25:37][MSBuild output] C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1605,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "VSLangProj80, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. [D:\BuildServer\TeamCity_Agent\work\d059d781c29b14d2\pMixins.VSPackage\pMixins.VSPackage.csproj.teamcity]
        [22:25:37][MSBuild output]
        [22:25:37][MSBuild output]
        [22:25:37][MSBuild output] "D:\BuildServer\TeamCity_Agent\work\d059d781c29b14d2\pMixins.VSPackage\pMixins.VSPackage.csproj.teamcity" (Build target) (1) ->
        [22:25:37][MSBuild output] (ResolveComReferences target) ->
        [22:25:37][MSBuild output] C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(2015,5): warning MSB3284: Cannot get the file path for type library "80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2" version 8.0. Library not registered. (Exception from HRESULT: 0x8002801D (TYPE_E_LIBNOTREGISTERED)) [D:\BuildServer\TeamCity_Agent\work\d059d781c29b14d2\pMixins.VSPackage\pMixins.VSPackage.csproj.teamcity]
        [22:25:37][MSBuild output] C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(2015,5): warning MSB3284: Cannot get the file path for type library "26ad1324-4b7c-44bc-84f8-b86aed45729f" version 10.0. Library not registered. (Exception from HRESULT: 0x8002801D (TYPE_E_LIBNOTREGISTERED)) [D:\BuildServer\TeamCity_Agent\work\d059d781c29b14d2\pMixins.VSPackage\pMixins.VSPackage.csproj.teamcity]
        [22:25:37][MSBuild output] C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(2015,5): warning MSB3284: Cannot get the file path for type library "1a31287a-4d7d-413e-8e32-3b374931bd89" version 8.0. Library not registered. (Exception from HRESULT: 0x8002801D (TYPE_E_LIBNOTREGISTERED)) [D:\BuildServer\TeamCity_Agent\work\d059d781c29b14d2\pMixins.VSPackage\pMixins.VSPackage.csproj.teamcity]
        [22:25:37][MSBuild output] C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(2015,5): warning MSB3284: Cannot get the file path for type library "2ce2370e-d744-4936-a090-3fffe667b0e1" version 9.0. Library not registered. (Exception from HRESULT: 0x8002801D (TYPE_E_LIBNOTREGISTERED)) [D:\BuildServer\TeamCity_Agent\work\d059d781c29b14d2\pMixins.VSPackage\pMixins.VSPackage.csproj.teamcity]
        [22:25:37][MSBuild output] C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(2015,5): warning MSB3284: Cannot get the file path for type library "1cba492e-7263-47bb-87fe-639000619b15" version 8.0. Library not registered. (Exception from HRESULT: 0x8002801D (TYPE_E_LIBNOTREGISTERED)) [D:\BuildServer\TeamCity_Agent\work\d059d781c29b14d2\pMixins.VSPackage\pMixins.VSPackage.csproj.teamcity]
        [22:25:37][MSBuild output] C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(2015,5): warning MSB3283: Cannot find wrapper assembly for type library "stdole". Verify that (1) the COM component is registered correctly and (2) your target platform is the same as the bitness of the COM component. For example, if the COM component is 32-bit, your target platform must not be 64-bit. [D:\BuildServer\TeamCity_Agent\work\d059d781c29b14d2\pMixins.VSPackage\pMixins.VSPackage.csproj.teamcity]
        [22:25:37][MSBuild output]
        [22:25:37][MSBuild output] 20 Warning(s)
        [22:25:37][MSBuild output] 0 Error(s)

2 ответа

Решение

Никодим прав, это нетривиальная задача, но это возможно.

В этой статье MSDN Расширения Visual Studio и Серверы сборки рассматриваются процессы для Visual Studio 2010.

Похоже, вы пытаетесь собрать пакет VS 2013, поэтому будут некоторые модификации:

Вы обнаружите, что это сложная задача, в которой много ловушек, и вашим конечным решением будет просто установить необходимые сборки, если у вас есть доступ.

Даже если вы создадите пакет, базовые задачи сборки будут искать переменные среды и ключи реестра, чтобы определить путь установки VsSdk (серьезно, подумайте о сборках задач сборки VsSdk для Microsoft.VsSDK.Build.Tasks.FolderLocator GetSDKInstallationPath() для примера).

Таким образом, чтобы заставить VsSdk работать без установщика, вам понадобится административный доступ к машине, и вы сможете собрать установочный пакет для установки необходимых ключей реестра и переменных среды и их соответствующих битов, а также создать собственный пакет NuGet для развертывания, но когда вы дойдете до этого момента, вы увидите, что заново изобрели колесо и должны были просто установить необходимый MSI VsSdk.

Другие вопросы по тегам