Skip to content
This repository was archived by the owner on Jun 21, 2023. It is now read-only.

Commit 1283457

Browse files
authored
Merge pull request #884 from github/fixes/883-experimental-builds
Add support for different build flavors using `IsExperimental` and `IsProductComponent` properties
2 parents 1052168 + 9c608f0 commit 1283457

10 files changed

+94
-21
lines changed

README.md

+44-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ Beta releases will have `(beta)` in their title in the gallery, following the ve
2626

2727
Clone the repository and its submodules in a git GUI client or via the command line:
2828

29-
```
29+
```txt
3030
git clone https://github.com/github/VisualStudio
3131
cd VisualStudio
3232
git submodule init
@@ -40,6 +40,49 @@ To be able to use the GitHub API, you'll need to:
4040
- [Register a new developer application](https://github.com/settings/developers) in your profile.
4141
- Open [src/GitHub.App/Api/ApiClientConfiguration.cs](src/GitHub.App/Api/ApiClientConfiguration.cs) and fill out the clientId/clientSecret fields for your application.
4242

43+
Build using Visual Studio 2015 or:
44+
45+
```txt
46+
build.cmd
47+
```
48+
49+
Install in live (non-Experimental) instances of Visual Studio 2015 and 2017:
50+
51+
```txt
52+
install.cmd
53+
```
54+
55+
Note, the script will only install in one instance of Visual Studio 2017 (Enterprise, Professional or Community).
56+
57+
## Build Flavors
58+
59+
By default, building will create a VSIX with `Experimental="true"` and `AllUsers="false"` in its `extension.vsixmanifest`. These settings are necessary in order to easily install a standalone VSIX file. There is no need to uninstall the version previously installed via Visual Studio setup / Extensions and Updates.
60+
61+
The following can be executed via `cmd.exe`.
62+
63+
To build and install a `Debug` configuration VSIX:
64+
```txt
65+
build.cmd
66+
install.cmd
67+
```
68+
69+
To build and install a `Release` configuration VSIX:
70+
```txt
71+
set Configuration=Release
72+
build.cmd
73+
install.cmd
74+
```
75+
76+
To build a VSIX that can be installed via a gallery feed on Extensions and Updates:
77+
```txt
78+
set Configuration=Release
79+
set IsExperimental=false
80+
build.cmd
81+
install.cmd
82+
```
83+
84+
Note, attempting to install `IsExperimental=false` builds of the VSIX is not recommended.
85+
4386
## More information
4487

4588
- Andreia Gaita's [presentation](https://www.youtube.com/watch?v=hz2hCO8e_8w) at Codemania 2016 about this extension.

build.cmd

+8-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,8 @@
1-
powershell.exe .\script\cibuild.ps1
1+
@if "%Configuration%" == "" set Configuration=Debug
2+
@if "%IsExperimental%" == "" set IsExperimental=true
3+
@if "%IsProductComponent%" == "" set IsProductComponent=false
4+
5+
call "%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\Common7\Tools\VsDevCmd.bat"
6+
7+
msbuild GitHubVS.sln /t:GitHub_VisualStudio /p:Configuration=%Configuration% /p:IsExperimental=%IsExperimental% /p:IsProductComponent=%IsProductComponent%
8+
@echo Built GitHub.VisualStudio with Configuration=%Configuration% IsExperimental=%IsExperimental% IsProductComponent=%IsProductComponent%

install.cmd

+6-3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1-
@set PATH=%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\Common7\IDE;%PATH%
2-
vsixinstaller /q /u:"c3d3dc68-c977-411f-b3e8-03b0dccf7dfc"
3-
vsixinstaller "%cd%\build\Debug\GitHub.VisualStudio.vsix"
1+
@if "%Configuration%" == "" set Configuration=Debug
2+
3+
@set path=%cd%\tools\VsixUtil;%path%
4+
5+
vsixutil /install "%cd%\build\%Configuration%\GitHub.VisualStudio.vsix" /s Enterprise;Professional;Community
6+
@echo Installed %Configuration% build of GitHub for Visual Studio

src/GitHub.StartPage/GitHub.StartPage.csproj

+7-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3-
<Import Project="..\..\packages\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.14.0.12-pre\build\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.props" Condition="Exists('..\..\packages\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.14.0.12-pre\build\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.props')" />
3+
<Import Project="..\..\packages\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.14.0.23-pre\build\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.props" Condition="Exists('..\..\packages\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.14.0.23-pre\build\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.props')" />
44
<PropertyGroup>
55
<MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion>
66
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
@@ -71,7 +71,9 @@
7171
<Link>Key.snk</Link>
7272
</None>
7373
<None Include="app.config" />
74-
<None Include="packages.config" />
74+
<None Include="packages.config">
75+
<SubType>Designer</SubType>
76+
</None>
7577
<None Include="source.extension.vsixmanifest">
7678
<SubType>Designer</SubType>
7779
</None>
@@ -186,10 +188,10 @@
186188
<PropertyGroup>
187189
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
188190
</PropertyGroup>
189-
<Error Condition="!Exists('..\..\packages\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.14.0.12-pre\build\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.14.0.12-pre\build\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.props'))" />
190-
<Error Condition="!Exists('..\..\packages\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.14.0.12-pre\build\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.14.0.12-pre\build\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.targets'))" />
191+
<Error Condition="!Exists('..\..\packages\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.14.0.23-pre\build\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.14.0.23-pre\build\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.props'))" />
192+
<Error Condition="!Exists('..\..\packages\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.14.0.23-pre\build\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.14.0.23-pre\build\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.targets'))" />
191193
</Target>
192-
<Import Project="..\..\packages\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.14.0.12-pre\build\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.targets" Condition="Exists('..\..\packages\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.14.0.12-pre\build\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.targets')" />
194+
<Import Project="..\..\packages\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.14.0.23-pre\build\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.targets" Condition="Exists('..\..\packages\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.14.0.23-pre\build\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.targets')" />
193195
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
194196
Other similar extension points exist, see Microsoft.Common.targets.
195197
<Target Name="BeforeBuild">

src/GitHub.StartPage/packages.config

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<package id="Microsoft.VisualStudio.CoreUtility" version="15.0.25901-RC" targetFramework="net452" />
44
<package id="Microsoft.VisualStudio.Imaging" version="15.0.25901-RC" targetFramework="net452" />
55
<package id="Microsoft.VisualStudio.OLE.Interop" version="7.10.6070" targetFramework="net452" />
6-
<package id="Microsoft.VisualStudio.Sdk.BuildTasks.14.0" version="14.0.12-pre" targetFramework="net461" developmentDependency="true" />
6+
<package id="Microsoft.VisualStudio.Sdk.BuildTasks.14.0" version="14.0.23-pre" targetFramework="net461" developmentDependency="true" />
77
<package id="Microsoft.VisualStudio.Shell.15.0" version="15.0.25901-RC" targetFramework="net452" />
88
<package id="Microsoft.VisualStudio.Shell.Framework" version="15.0.25901-RC" targetFramework="net452" />
99
<package id="Microsoft.VisualStudio.Shell.Immutable.10.0" version="10.0.30319" targetFramework="net461" />

src/GitHub.VisualStudio/GitHub.VisualStudio.csproj

+17-7
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,15 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="14.0">
3-
<Import Project="..\..\packages\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.14.0.12-pre\build\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.props" Condition="Exists('..\..\packages\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.14.0.12-pre\build\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.props')" />
3+
<Import Project="..\..\packages\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.14.0.23-pre\build\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.props" Condition="Exists('..\..\packages\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.14.0.23-pre\build\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.props')" />
44
<Import Project="..\..\packages\LibGit2Sharp.NativeBinaries.1.0.129\build\LibGit2Sharp.NativeBinaries.props" Condition="Exists('..\..\packages\LibGit2Sharp.NativeBinaries.1.0.129\build\LibGit2Sharp.NativeBinaries.props')" />
5+
<!--
6+
Update to have AllUsers="true" and Experimental="false" when $(IsExperimental)' == 'false'
7+
-->
8+
<Target Name="MakeVsixManifestAllUsers" AfterTargets="DetokenizeVsixManifestFile" Condition=" '$(IsExperimental)' == 'false' ">
9+
<Warning Text="NOTE: Tweaking '$(IntermediateVsixManifest)' to have AllUsers='true' and Experimental='false'" />
10+
<XmlPoke XmlInputPath="$(IntermediateVsixManifest)" Query="/x:PackageManifest/x:Installation/@AllUsers" Value="true" Namespaces="&lt;Namespace Prefix='x' Uri='http://schemas.microsoft.com/developer/vsx-schema/2011' /&gt;" />
11+
<XmlPoke XmlInputPath="$(IntermediateVsixManifest)" Query="/x:PackageManifest/x:Installation/@Experimental" Value="false" Namespaces="&lt;Namespace Prefix='x' Uri='http://schemas.microsoft.com/developer/vsx-schema/2011' /&gt;" />
12+
</Target>
513
<PropertyGroup>
614
<MinimumVisualStudioVersion>$(MSBuildToolsVersion)</MinimumVisualStudioVersion>
715
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">$(MSBuildToolsVersion)</VisualStudioVersion>
@@ -13,7 +21,7 @@
1321
<ApplicationVersion>2.2.0.8</ApplicationVersion>
1422
<OutputPath>..\..\build\$(Configuration)\</OutputPath>
1523
<VsixType>v3</VsixType>
16-
<IsProductComponent>true</IsProductComponent>
24+
<IsProductComponent>false</IsProductComponent>
1725
</PropertyGroup>
1826
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
1927
<PropertyGroup>
@@ -435,7 +443,9 @@
435443
</VSCTCompile>
436444
</ItemGroup>
437445
<ItemGroup>
438-
<Resource Include="FodyWeavers.xml" />
446+
<Resource Include="FodyWeavers.xml">
447+
<SubType>Designer</SubType>
448+
</Resource>
439449
<CodeAnalysisDictionary Include="..\common\CodeAnalysisDictionary.xml">
440450
<Link>Properties\CodeAnalysisDictionary.xml</Link>
441451
</CodeAnalysisDictionary>
@@ -719,17 +729,17 @@
719729
<Error Condition="!Exists('..\..\packages\SQLitePCL.raw_basic.0.7.3.0-vs2012\build\net45\SQLitePCL.raw_basic.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SQLitePCL.raw_basic.0.7.3.0-vs2012\build\net45\SQLitePCL.raw_basic.targets'))" />
720730
<Error Condition="!Exists('..\..\packages\LibGit2Sharp.NativeBinaries.1.0.129\build\LibGit2Sharp.NativeBinaries.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\LibGit2Sharp.NativeBinaries.1.0.129\build\LibGit2Sharp.NativeBinaries.props'))" />
721731
<Error Condition="!Exists('..\..\packages\Fody.1.29.4\build\dotnet\Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Fody.1.29.4\build\dotnet\Fody.targets'))" />
722-
<Error Condition="!Exists('..\..\packages\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.14.0.12-pre\build\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.14.0.12-pre\build\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.props'))" />
723-
<Error Condition="!Exists('..\..\packages\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.14.0.12-pre\build\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.14.0.12-pre\build\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.targets'))" />
732+
<Error Condition="!Exists('..\..\packages\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.14.0.23-pre\build\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.14.0.23-pre\build\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.props'))" />
733+
<Error Condition="!Exists('..\..\packages\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.14.0.23-pre\build\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.14.0.23-pre\build\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.targets'))" />
724734
</Target>
725735
<Import Project="..\..\packages\SQLitePCL.raw_basic.0.7.3.0-vs2012\build\net45\SQLitePCL.raw_basic.targets" Condition="Exists('..\..\packages\SQLitePCL.raw_basic.0.7.3.0-vs2012\build\net45\SQLitePCL.raw_basic.targets')" />
726736
<Import Project="..\..\packages\Fody.1.29.4\build\dotnet\Fody.targets" Condition="Exists('..\..\packages\Fody.1.29.4\build\dotnet\Fody.targets')" />
727-
<Import Project="..\..\packages\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.14.0.12-pre\build\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.targets" Condition="Exists('..\..\packages\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.14.0.12-pre\build\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.targets')" />
737+
<Import Project="..\..\packages\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.14.0.23-pre\build\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.targets" Condition="Exists('..\..\packages\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.14.0.23-pre\build\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.targets')" />
728738
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
729739
Other similar extension points exist, see Microsoft.Common.targets.
730740
<Target Name="BeforeBuild">
731741
</Target>
732742
<Target Name="AfterBuild">
733743
</Target>
734744
-->
735-
</Project>
745+
</Project>

src/GitHub.VisualStudio/packages.config

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<package id="Microsoft.VisualStudio.CoreUtility" version="14.3.25407" targetFramework="net461" />
99
<package id="Microsoft.VisualStudio.Imaging.Interop.14.0.DesignTime" version="14.3.25407" targetFramework="net461" />
1010
<package id="Microsoft.VisualStudio.OLE.Interop" version="7.10.6070" targetFramework="net461" />
11-
<package id="Microsoft.VisualStudio.Sdk.BuildTasks.14.0" version="14.0.12-pre" targetFramework="net461" developmentDependency="true" />
11+
<package id="Microsoft.VisualStudio.Sdk.BuildTasks.14.0" version="14.0.23-pre" targetFramework="net461" developmentDependency="true" />
1212
<package id="Microsoft.VisualStudio.Shell.14.0" version="14.3.25407" targetFramework="net461" />
1313
<package id="Microsoft.VisualStudio.Shell.Immutable.10.0" version="10.0.30319" targetFramework="net461" />
1414
<package id="Microsoft.VisualStudio.Shell.Immutable.11.0" version="11.0.50727" targetFramework="net461" />
@@ -29,7 +29,7 @@
2929
<package id="Microsoft.VisualStudio.Threading" version="14.1.131" targetFramework="net461" />
3030
<package id="Microsoft.VisualStudio.Utilities" version="14.3.25407" targetFramework="net461" />
3131
<package id="Microsoft.VisualStudio.Validation" version="14.1.111" targetFramework="net461" />
32-
<package id="Microsoft.VSSDK.Vsixsigntool" version="14.1.24720" targetFramework="net45" />
32+
<package id="Microsoft.VSSDK.Vsixsigntool" version="15.0.26201" targetFramework="net461" />
3333
<package id="Newtonsoft.Json" version="6.0.8" targetFramework="net45" />
3434
<package id="NLog" version="3.1.0" targetFramework="net45" />
3535
<package id="NullGuard.Fody" version="1.4.6" targetFramework="net461" developmentDependency="true" />

src/GitHub.VisualStudio/source.extension.vsixmanifest

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<PreviewImage>Resources\preview_200x200.png</PreviewImage>
1212
<Tags>GitHub;git;open source;source control;branch;pull request;team explorer;commit;publish</Tags>
1313
</Metadata>
14-
<Installation AllUsers="true">
14+
<Installation AllUsers="false" Experimental="true">
1515
<InstallationTarget Id="Microsoft.VisualStudio.Community" Version="[14.0,15.0]" />
1616
</Installation>
1717
<Dependencies>

test.cmd

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
@rem Tests currently only work on `Release` build.
2+
@if "%config%" == "" set config=Release
3+
4+
call "%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\Common7\Tools\VsDevCmd.bat"
5+
6+
msbuild GitHubVS.sln /p:Configuration=%Config%
7+
VSTest.Console.exe src\UnitTests\bin\%Config%\UnitTests.dll /TestAdapterPath:"."
8+
VSTest.Console.exe src\TrackingCollectionTests\bin\%Config%\TrackingCollectionTests.dll /TestAdapterPath:"."

tools/VsixUtil/VsixUtil.exe

17 KB
Binary file not shown.

0 commit comments

Comments
 (0)