Unpacking Software Livestream

Join our monthly Unpacking Software livestream to hear about the latest news, chat and opinion on packaging, software deployment and lifecycle management!

Learn More

Chocolatey Product Spotlight

Join the Chocolatey Team on our regular monthly stream where we put a spotlight on the most recent Chocolatey product releases. You'll have a chance to have your questions answered in a live Ask Me Anything format.

Learn More

Chocolatey Coding Livestream

Join us for the Chocolatey Coding Livestream, where members of our team dive into the heart of open source development by coding live on various Chocolatey projects. Tune in to witness real-time coding, ask questions, and gain insights into the world of package management. Don't miss this opportunity to engage with our team and contribute to the future of Chocolatey!

Learn More

Calling All Chocolatiers! Whipping Up Windows Automation with Chocolatey Central Management

Webinar from
Wednesday, 17 January 2024

We are delighted to announce the release of Chocolatey Central Management v0.12.0, featuring seamless Deployment Plan creation, time-saving duplications, insightful Group Details, an upgraded Dashboard, bug fixes, user interface polishing, and refined documentation. As an added bonus we'll have members of our Solutions Engineering team on-hand to dive into some interesting ways you can leverage the new features available!

Watch On-Demand
Chocolatey Community Coffee Break

Join the Chocolatey Team as we discuss all things Community, what we do, how you can get involved and answer your Chocolatey questions.

Watch The Replays
Chocolatey and Intune Overview

Webinar Replay from
Wednesday, 30 March 2022

At Chocolatey Software we strive for simple, and teaching others. Let us teach you just how simple it could be to keep your 3rd party applications updated across your devices, all with Intune!

Watch On-Demand
Chocolatey For Business. In Azure. In One Click.

Livestream from
Thursday, 9 June 2022

Join James and Josh to show you how you can get the Chocolatey For Business recommended infrastructure and workflow, created, in Azure, in around 20 minutes.

Watch On-Demand
The Future of Chocolatey CLI

Livestream from
Thursday, 04 August 2022

Join Paul and Gary to hear more about the plans for the Chocolatey CLI in the not so distant future. We'll talk about some cool new features, long term asks from Customers and Community and how you can get involved!

Watch On-Demand
Hacktoberfest Tuesdays 2022

Livestreams from
October 2022

For Hacktoberfest, Chocolatey ran a livestream every Tuesday! Re-watch Cory, James, Gary, and Rain as they share knowledge on how to contribute to open-source projects such as Chocolatey CLI.

Watch On-Demand

Downloads:

1,196

Downloads of v 2.2.3:

91

Last Update:

12 Mar 2021

Package Maintainer(s):

Software Author(s):

  • Giona Imperatori

Tags:

.net c# nuget visual studio git multi repo

SlnLauncher (Portable)

This is not the latest version of SlnLauncher (Portable) available.

  • 1
  • 2
  • 3

2.2.3 | Updated: 12 Mar 2021

Downloads:

1,196

Downloads of v 2.2.3:

91

Maintainer(s):

Software Author(s):

  • Giona Imperatori

SlnLauncher (Portable) 2.2.3

This is not the latest version of SlnLauncher (Portable) available.

  • 1
  • 2
  • 3

Some Checks Have Failed or Are Not Yet Complete

Not All Tests Have Passed


Validation Testing Passed


Verification Testing Passed

Details

Scan Testing Resulted in Flagged:

This package was submitted (and approved) prior to automated virus scanning integration into the package moderation processs.

We recommend clicking the "Details" link to make your own decision on installing this package.

Details
Learn More

Deployment Method: Individual Install, Upgrade, & Uninstall

To install SlnLauncher (Portable), run the following command from the command line or from PowerShell:

>

To upgrade SlnLauncher (Portable), run the following command from the command line or from PowerShell:

>

To uninstall SlnLauncher (Portable), run the following command from the command line or from PowerShell:

>

Deployment Method:

NOTE

This applies to both open source and commercial editions of Chocolatey.

1. Enter Your Internal Repository Url

(this should look similar to https://community.chocolatey.org/api/v2/)


2. Setup Your Environment

1. Ensure you are set for organizational deployment

Please see the organizational deployment guide

2. Get the package into your environment

  • Open Source or Commercial:
    • Proxy Repository - Create a proxy nuget repository on Nexus, Artifactory Pro, or a proxy Chocolatey repository on ProGet. Point your upstream to https://community.chocolatey.org/api/v2/. Packages cache on first access automatically. Make sure your choco clients are using your proxy repository as a source and NOT the default community repository. See source command for more information.
    • You can also just download the package and push it to a repository Download

3. Copy Your Script

choco upgrade slnlauncher -y --source="'INTERNAL REPO URL'" --version="'2.2.3'" [other options]

See options you can pass to upgrade.

See best practices for scripting.

Add this to a PowerShell script or use a Batch script with tools and in places where you are calling directly to Chocolatey. If you are integrating, keep in mind enhanced exit codes.

If you do use a PowerShell script, use the following to ensure bad exit codes are shown as failures:


choco upgrade slnlauncher -y --source="'INTERNAL REPO URL'" --version="'2.2.3'" 
$exitCode = $LASTEXITCODE

Write-Verbose "Exit code was $exitCode"
$validExitCodes = @(0, 1605, 1614, 1641, 3010)
if ($validExitCodes -contains $exitCode) {
  Exit 0
}

Exit $exitCode

- name: Install slnlauncher
  win_chocolatey:
    name: slnlauncher
    version: '2.2.3'
    source: INTERNAL REPO URL
    state: present

See docs at https://docs.ansible.com/ansible/latest/modules/win_chocolatey_module.html.


chocolatey_package 'slnlauncher' do
  action    :install
  source   'INTERNAL REPO URL'
  version  '2.2.3'
end

See docs at https://docs.chef.io/resource_chocolatey_package.html.


cChocoPackageInstaller slnlauncher
{
    Name     = "slnlauncher"
    Version  = "2.2.3"
    Source   = "INTERNAL REPO URL"
}

Requires cChoco DSC Resource. See docs at https://github.com/chocolatey/cChoco.


package { 'slnlauncher':
  ensure   => '2.2.3',
  provider => 'chocolatey',
  source   => 'INTERNAL REPO URL',
}

Requires Puppet Chocolatey Provider module. See docs at https://forge.puppet.com/puppetlabs/chocolatey.


4. If applicable - Chocolatey configuration/installation

See infrastructure management matrix for Chocolatey configuration elements and examples.

Package Approved

This package was approved by moderator TheCakeIsNaOH on 19 Mar 2021.

Description

The SlnLauncher is a tool that allows to dyncamically and automatically create VisualStudio solution files (.sln).
As input, it takes a SlnX file that contains all the required information.
The SlnLauncher takes care of finding the C# projects, downloading the NuGet packages of your projects while ensuring package versions consistency and automatically formatting .csproj for a seamless integration.


README.md
# SlnLauncher

<img src="https://git.immo-electronics.ch/giona.imperatori/slnlauncher/-/raw/master/Icon/SlnLauncher.png" width="100">

*...from developers for developers...*

The SlnLauncher is a tool that allows to dyncamically and automatically create VisualStudio solution files (.sln).

As input, it takes a SlnX file that contains all the required information.

The SlnLauncher takes care of finding the C# projects, downloading the NuGet packages of your projects while ensuring package versions consistency and automatically formatting .csproj for a seamless integration.

The SlnLauncher allows developers to forget once for all issues related to VisualStudio like:

* Referenced assembly not found
* Project not found
* Multiple versions of the same NuGet package
* Debug of the own NuGet packages

It doesn't matter anymore where a repository is locally checked out, the SlnLauncher will find what's needed and plug all the components together for you.

Addtionally, the "[Package Debug Feature](#PackageDebugFeature)" allows to seamlessly debug your own NuGet packages from source code by simply adding one element in the SlnX file.
This great feature can be exploited to reduce the burdens of a multi-repo code base, leaving to the developers only the benefits of it!

# Installation

The SlnLauncher is currently packetized in a Choco package.<br>
It's currently not available under chocolatey.org (approval pending).<br>
The choco package can be download from GitLab, and installed from the local source.<br>
The latest version can be find here: https://git.immo-electronics.ch/giona.imperatori/slnlauncher/-/releases

``` PowerShell 
curl https://git.immo-electronics.ch/giona.imperatori/slnlauncher/-/package_files/8/download -O -J
choco install slnlauncher --source .
```

# Definitions

| Name                 | Defintion                                                                                 |
| -------------------- | ----------------------------------------------------------------------------------------- |
| Test project         | Every project with the name ending with ".Test.csproj", is treated as a Test project.     |
| Legacy-style project | A CS project file whose format has not yet been ported to the new Microsoft.NET.Sdk style |

<br>

# How it works?

The SlnX file feeded to the SlnLauncher contains all the necessary information to create a working VisualStudio solution file:

* Where to look for projects
* Where to store NuGet packages
* The required C# projects
* The required NuGet packages

The application searches all the specified projects&packages, evaluates all assembly and nuget references/dependencies.
With these information, it [generated a set of environment variables](#GenereatedEnvVars) that are used to "connect" projects and references before opening the generate VS Studio solution file.

## Projects

You can work with VisualStudio as usual. Adding new projects, adding new references among them etc. You simply have to add the new projects in the SlnX file, or ensure their name match the defined wildcards.

By adding a new project reference to a project, VisualStudio enters it with a relative path:

``` XML
<ProjectReference Include="..\..\My.First.Project.csproj" />
```
<br>
The SlnLauncher automatically rewrites it before launching VisualStudio in the following format:

``` XML
<ProjectReference Include="$(My_First_Project)\My.First.Project.csproj" />
```

and sets the variable "My\_First\_Project" accordingly.
<br>
## Assemblies and Packages

A similar approach is used for the referenced assembly files.
This is one of the reasons why with the SlnLauncher [NuGet package are not used as NuGet package](#NuGetNotAsNuGet), but simply as assemblies collection.

## <a name="NuGetNotAsNuGet"></a>NuGet packages, not as NuGet packages

- - -

**NOTE**: By default the tool downloads the NuGet packages dependencies automatically (see parameter *-nd*). In the log files warnings/infos will be generated for the packages not defined in the SlnX file.

- - -

The SlnLauncher finds the NuGet packages you specify, and it installs them. Why? Why not just giving a reference to the NuGet packages in the C# projects?

The reason is quite simple: Visual Studio doesn't do a very good job in managing different NuGet package versions.
By plugging together different packages with different dependencies, it can happen that a version-collision occures and Visual Studio is so kind that it doesn't mention that. Leaving you in not always knowing what you're actually debugging.

To avoid these issues, the SlnLauncher takes over the job, ensuring that only **one** version of a package-content is made avaialable to all the projects.

If a collision occures, tool makes you aware of that and then it is up to you to resolve it :-)

That said, simply reference the necessary DLL(s) coming from a NuGet package (from the *packagesPath* folder) via VisualStudio as for any other assembly.

The SlnLauncher will take over the task of rewriting the path with the necessary environmental variable.

## <a name="PackageDebugFeature"></a>Package Debug Feature

- - -

**NOTE:** This feature doesn't work on legacy-style projects, since these files do not support the import statement. Upgrade them to the Microsoft.NET.Sdk style. You will love it :)

- - -

If in your company you have libraries packed and released in NuGet packages, this is feature is for sure for you.
One of the biggest hassle of using NuGet packages in application is their debuggability. This can be somehow solved by packging PDBs in NuGet packages.

But what about refactorings?

A simple change of method name can involve quite some work: fix the library, test it, create the nuget package for it, update (manually!) all piece of code that called that method.
That SlnX launcher helps you here in one single simple step.

### 1) Add a \<debug> tag for the NuGet package

Add the debug element to your SlnX file, for all packages you intendend to debug/refactor.

- - -

**NOTE:** it is highly suggested to write these information in the \<yourApp>.slnx.user file, to avoid accidentals commits :-)

- - -

``` XML
<debug package="MyPackage" slnx="<PathToMyPackageRepo>\MyPackageRepo.slnx" />
```

<span class="colour" style="color:var(--vscode-unotes-wsyText)">Done. Nothing more is required from your side.</span>

With these information, the SlnLauncher will search for the additional projects needed to be added in the VS Solution.

- - -

**NOTE:** The Test projects will not be imported.

- - -

But thre is more to it: the tool will also create a file called *nuget.debug* for each relevant project. This file contains all the properties necessary to properly and **automatically** update the project dependencies in your solution. Don't worry, the tool takes care of adding a properly formatted import statement in all your CsProj files.<br>It works seamlessy for you.

## Known limitations and issues

* Only projects in the Microsoft.NET.Sdk format are supported.
Workaround: Update your project files, you and your team will only profit of it :-)
* Only one nuspec can be generated per SlnX file
Workaround: use multiple SlnX files, one per application. It's anyway the better choice :-)
* Package Debug feature: the debug-SlnX file will not override variables set by the main SlnX file. This can cause troubles in loading finding projects etc.
Workaround:
    * Use unique environment variable names or use them only with static values, for example your company NuGet server, etc.
    * Do not use environment variable in the *searchPath* or similar elements, the chances of collision are big (developers love the Copy&Paste feature :-) )
* Works best Git, can be troublesome with SVN
If you have an SVN repo with trunk/ branches/ tags/ in the *searchPath*, the tool will find multiple versions of the specified projects. Therefore it will not be able to produce the sln file.<br>
Workaround 1: check out only the branch your currently working on<br>
Workaround 2: migrate to Git :-)
* If you want to build on your build server using (for example) dotnet, you need to prepare the command shell with all the necessary environment variable.<br>
No worries, that's why the tool allows you to create a Batch/Python/MsBuild file exactly to do so :-) !

Possible limitation?

* Only one framework per NuGet package can specified. This "limitation" is explained best by an example:
The NuGet package Newtonsoft.Json package provides its APIs built for multiple frameworks (e.g. net45 and netstandard1.0)
You have your own library NuGet package built on .NET Standard 2.0 called "CoreLib" that references Newtonsoft-nestandard1.0
You have an application built on .NET Framework 4.5 called "App1" that references CoreLib and Newtonsoft-net45
The SlnLauncher will not be able to uniquely set the reference to the packages and therefore it will raise an exception.

# <a name="CommandLineArgs"></a> Command line arguments

If an argument is not passed as command line argument, regardless of its type, the default value is applied.
If an argument is mandatory, but it's not set, an exception will be thrown.
Refer to [NDesk Options](http://www.ndesk.org/doc/ndesk-options/NDesk.Options/OptionSet.html) for more information.

## Argument types

### Boolean

A boolean argument (e.g. "Arg", alias "a") can be set (evaluated as true) in the following ways:

* -Arg, -a
* -Arg+, -a+

It can explicitly set to false in the following way:

* -Arg-, -a-

### String

A string argument (i.e. "Arg", alias "a") requires a value to be specified.
The value can be specified in the following ways:

* -Arg=\<value>, -a=\<value>
* -Arg \<value>, -a value

## Supported arguments

The following table shows all the command line arguments that are supported
by the current luancher version.

| Argument name        | Alias | Type    | Mandatory | Default | Description                                                                                                                                                                                                                                                                                                                                                           |
| -------------------- | ----- | ------- | --------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| version              | v     | boolean | No        | false   | If set, it displays the tool's version and exists.                                                                                                                                                                                                                                                                                                                    |
| dump                 | d     | boolean | No        | false   | If set it dumps all project&packages information as well as the environment variables in dump.txt located in the SlnX location.                                                                                                                                                                                                                                       |
| log                  |       | boolean | No        | false   | If set, it enables the logging to a file. If the SlnX file location exists, the log file will be create in there. Otherwise the location of the SlnLauncher.exe will be used.                                                                                                                                                                                         |
| quite                | q     | boolean | No        | false   | No pop-ups or windows will be shown (e.g. in case of exceptions, while loading NuGet packages, etc.)                                                                                                                                                                                                                                                                  |
| msbuildModule        | msb   | boolean | No        | false   | If set, a MSBuild target file (MsBuildGeneratedProperties.targets) containing all defined environment variables is created in the SlnX file location.                                                                                                                                                                                                                 |
| pythonModule         | py    | string  | No        | null    | If set, \<value> is used as relative (to the SlnX file) folder path for the creation of the python module (SetEnvVars.py) containing all defined environment variables.                                                                                                                                                                                               |
| batchModule          | b     | string  | No        | null    | If set, \<value> is used as relative (to the SlnX file) folder path for the creation of the python module (SetEnvVars.bat) containing all defined environment variables.                                                                                                                                                                                              |
| nuspec               | ns    | string  | No        | null    | If set, \<value> is used as relative (to the SlnX file) folder path in which all required files for a NuGet package will be copied and generated based on the current solution (projects DLLs/PDBs, .nusepc, dependencies).<br>Afterwards, the following command can be execute to create the NuGet package of the solution: >nuget pack \<value>\\\<SlnxName>.nuspec |
| choco                | c     | string  | No        | null    | To be implemented....                                                                                                                                                                                                                                                                                                                                                 |
| openSln              | o     | boolean | No        | true    | If set, it will open the generated Sln (with the default operating system tool) file before exiting the launcher.                                                                                                                                                                                                                                                     |
| nugetDependencies    | nd    | boolean | No        | true    | If set, the dependencies of the provided packages will be also automatically downloaded.                                                                                                                                                                                                                                                                              |
| nugetForceMinVersion | nf    | boolean | No        | true    | If set, the tool will check that all the packages dependencies fullfill the min-version provided in the NuGet package (not allowing newer versions).<br>If not, the version simply has to satisfy the [version range](https://docs.microsoft.com/en-us/nuget/concepts/package-versioning) required by the package.                                                    |
|                      |       | string  | Yes       | null    | Any "unnamed" argument will be used a file path to the SlnX file to be parsed.<br>The last "unnamed" argument will be used as SlnX file path. All others will be ignored.                                                                                                                                                                                             |
<br>

# Environment variables and special keys

The SlnLauncher makes use of environment variables in order to link project and assembly references in the CsProject files.<br>
Some of these variables are [automatically generated](#GenereatedEnvVars) based on different criterias, for example the package-id of a NuGet package or the name of C# project.<br>
Using the [env](#EnvElement) element, additional variable can be specified in the SlnX file.<br>
The environments variable have a key (or name) and a value.<br>
In windows they can be accessed with the following format "%*key*%", in the Microsoft build files via "$(*key*)" 
For example a common environment variable in windows is the "%PROGRAMFILES%".<br>
In this case the key is "PROGRAMFILES" and the value is usually "*C:\Program Files*".

## <a name="GenereatedEnvVars"></a>Generated environment variables

The generated environment variable are used by the tools (and VisualStudio) to locate the different components, include or not certain files etc.<br>
The SlnLauncher can generate a variate of files, that define environment variables, and are used by other tools(e.g. python, batch, etc.).<br>
Refer to the [command line section](#CommandLineArgs) for more information on the type of files that can be generated.<br>
The following table shows the variable keys and their respective value that are generated by the SlnLauncher.

| Key                        | Value                                                                              |
| -------------------------- | ---------------------------------------------------------------------------------- |
| \<*package-id*>            | Set to the directory containing the package assemblies.                            |
| \<*package-id*>\_version   | *version* of the specified NuGet package. (Currently not really used)              |
| \<*package-id*>\_framework | The *targetFramework* of the specified NuGet package.                              |
| \<*package-id*>\_debug     | 1: if the NuGet package is marked to be compiled via source code.<br>0: otherwise |
| \<*project-id*>            | Path to the .csproj file of the C# project.                                        |

- - -

**NOTE:**
The package id and project name related environment variable keys are always formatted with the following rule:

* Every '.' (dot) is replaced with '\_' (single underscore)

Example: "NuGet.Protocol" becomes "NuGet\_Protocol"

- - -

**EXAMPLE:**

``` XML
    ...
    <package id="My.Package.Id" version="0.2.1" targetFramework="net45" source="http://somesource" />
    <project name="My.Project.Name" container="" />
    ...
```
For the above elements in a SlnX file, the tool will generate the following variables
| Key                        | Value                                                                              |
| -------------------------- | ---------------------------------------------------------------------------------- |
| My\_Package\_Id            | C:\NugetCache\My.Package.Id.0.2.1\lib\net45                                        |
| My\_Package\_Id\_version   | 0.2.1                                                                              |
| My\_Package\_Id\_framework | net5                                                                               |
| My\_Package\_Id\_debug     | 1: if the NuGet package is markjed to be compiled via source code.<br>0: otherwise |
| My\_Project\_Name          | C:\myRepo\Source\MyProjectNameDirectory                                            |

- - -

## Special keys

These values can be used in some of the elements and attribute values of the SlnX file.
The tool will replace them with the corresponding value and additionally it will set a corresponding environment variable with the same key.<br>
The format of these variables is "$(*key*)".<br>
For example: $(slnx)

| Key  | Value                                      |
| ---- | ------------------------------------------ |
| slnx | Directory path of the specified SlnX file. |
<br>

# SlnX Format

``` XML
<?xml version="1.0"?>
<SlnX searchPath="" packagesPath="">
    <nuget excludeProjects="false" excludePackages="false">
        <targetConfig></targetConfig>
        <readme>README.md</readme>
        <content>
            <assembly targetFramework="">**\SomeDll.dll</assembly>
        <info>
        </info>
    </nuget>
    <env name=""></env>
    <package id="" version="0.2.1" targetFramework="" source="%NUGET_URL%" />
    <project name="SlnLauncher" container="" />
    <debug package="" slnx="" />
</SlnX>
```

## Element descriptions

The default value is applied in case the specified element or attribute is not specified.
If the default value is set to "*none"* or as a specific value, the element or attribute is considered to be optional.
If the default value is set to "*-"*, the element or attribute is required.

### Slnx

Solution file description.

| Attribute    | Default      | Description                                                                                                                                                                                                                        |
| ------------ | ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| searchPath   | -            | Directory path in which the specified projects will be located.                                                                                                                                                                    |
| packagesPath | $(slnx)\pack | Directory path in which the specified packages will be installed.<br>It can be seen as the "cache" of the NuGet packages in your local machine. <br>It can be shared among different libraries and applications (save disk space). |

| Child node | Default | Description           |
| ---------- | ------- | --------------------- |
| nuget      | *none*  | See description below |
| env        | *none*  | See description below |
| package    | *none*  | See description below |
| project    | *none*  | See description below |
| import     | *none*  | See description below |
| bundle     | *none*  | See description below |
| debug      | *none*  | See description below |
<br>

### nuget

Input information for the nuspec file generation.<br>
The tool will (if excludeProjects is not set to true) automatically add all output assemblies from the listed projects (the referenced assemblies are not included).<br>
With the *content* element it is possible to add additional assemblies to the generated nuspec file.

| Attribute       | Default | Description                                                                                             |
| --------------- | ------- | ------------------------------------------------------------------------------------------------------- |
| excludeProjects | false   | If set to true, the assemblies of the listed projects will not be included in the generated nuspec.     |
| excludePackages | false   | If set to true, the listed NuGet packages will not be included as dependencies in the generated nuspec. |


| Child node   | Default | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| ------------ | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| targetConfig | Release | Folder name in the "bin" directory of the projects.<br>Usually "Debug" or "Release                                                                                                                                                                                                                                                                                                                                                                                                                |
| readme       | *none*  | Path to the ReadMe file to be included in the NuGet package.                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| content      | *none*  | See the [content](#ContentElement)                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| info         | *none*  | The child nodes included in the info element will be directly included in the nuspec file.<br>See the [nuspec documentation](https://docs.microsoft.com/en-us/nuget/reference/nuspec) for reference.<br>At least the following fields are requrired by the NuGet packager:<span class="colour" style="color:rgb(0, 0, 255)"></span><br><span class="colour" style="color:rgb(0, 0, 255)"></span>    \<description>\</description><br>    \<authors>\</authors><br>    \<projectUrl>\</projectUrl> |
<br>

### <a name="ContentElement"></a> content 
Contains the list of additional assemblies to be added to the nuspec.

| Child node | Default | Description                            |
| ---------- | ------- | -------------------------------------- |
| assembly   | *none*  | See the [assembly](#AssemblyElement) . |
<br>

### <a name="AssemblyElement"></a> assembly 
Value that defines one or multiple assemblies to be added in addition to the project-generated assemblies.<br>
The value is a path in the glob format.<br>
For example: *\*\*\\\*.dll* would include all DLL found under the *$(slnx)* path (not a wise idea!)

| Attribute       | Default | Description                                                                                            |
| --------------- | ------- | ------------------------------------------------------------------------------------------------------ |
| targetFramework | -       | Target .NET framework folder name in which the assemblies will be copied in the nuspec. (e.g. "net45") |
<br>

### <a name="EnvElement"></a> env

Value of the environment variable with the name specified in the attribute.

- - -

**NOTE**
For the main SlnX file and all other imported SlnX files (via import or debug), if an environment variable is already set, it will not be overriden by the value defined in the env element within the SlnX file.
On the other hand all variables in the User SlnX (.slnx.user file) file will override any previousely set value.

- - -

| Attribute | Default | Description                                 |
| --------- | ------- | ------------------------------------------- |
| name      | -       | Name of the environment variable to be set. |
<br>

### <a name="PackageElement"></a>package

Defintion of a NuGet package to be installed.

| Attribute       | Default | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| --------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| id              | -       | Name of the NuGet package                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| version         | -       | Version of the NuGet package (see [Version specification](https://docs.microsoft.com/en-us/nuget/concepts/package-versioning))                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| targetFramework | *none*  | Target .NET framework version of the NuGet package, that the application is going to link to.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| source          | -       | The URI or local path in which the NuGet package will be searched.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| IsDoNetLib      | true    | The tool will set the \<package-id> environment variable (assemblies path) based on this parameter.<br>If the package attribute IsDotNetLib is set, the path will be se to:<br>"\<package-install-path>\lib\\\<targetFramewok>" if the package is recognised as "implementation assembly" package<br>"\<package-install-path>\ref\\\<targetFramewok>" if the package is recognised as "compile time assembly" package<br>Otherwise to:<br>\<package-install-path>\\\<targetFramework><br><br>**NOTE:**<br>For packages not following the standard .NET NuGet package format, set this field to False and use \<targetFramework> to point to the disered directory. |
| var             | *none*  | Deprecated. Will be removed in future releases.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
<br>

### project

Defintion of a C# project to be added to the solution.

| Attribute | Default | Description                                                                                                                                                                                                                                                                    |
| --------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| name      | -       | Name of the environment variable to be set.<br>Wild cards (\*) can be used to match multiple projects.                                                                                                                                                                         |
| container | *none*  | This value can be used to define a subdirectory in the VS Solution file, in which the project will be placed.<br>The container can have multiple sub-directories (ex: Libs/Bar/Foo)<br>If not set, all Test projects are automatically placed under a container called "Test". |
| packable  | true    | If set to false, this project is not being conisdered in the generation of the nuspec file.<br>Useful to avoid to include test projects.                                                                                                                                       |
<br>

### debug

Defines the location of the SlnX sources  to be used to debug a NuGet package.

| Attribute | Default | Description                                                   |
| --------- | ------- | ------------------------------------------------------------- |
| package   | -       | The name of the NuGet package required to be debugged.        |
| slnx      | -       | Path to the SlnX file related to the specified NuGet package. |
<br>

### import

Definition of a set of NuGet packages.

| Attribute | Default | Description                                                                                                                                                                                                                                         |
| --------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| path      | *none*  | Path to another SlnX file to be inclued.<br>**NOTE:**<br>Only the defined *env* and *bundle* elements are imported into the main SlnX file.<br>This means that the import elements of an imported file are not evaluated (import is not recursive). |
| bundle    | -       | The name of the a defined *bundle* to imported.<br>If a package id imported via *bundle* is already known, it will not be overriden.                                                                                                                |
<br>

### bundle

Definition of a set of NuGet packages.

| Child node | Default | Description                    |
| ---------- | ------- | ------------------------------ |
| package    | *none*  | See [package](#PackageElement) |
<br>

## Examples

``` XML
<?xml version="1.0"?>
<SlnX searchPath="$(slnx)" packagesPath="C:\Nugetcache">
    <env name="NUGET_URL">https://api.nuget.org/v3/index.json</env>

    <package id="NDesk.Options" version="0.2.1" targetFramework="" source="%NUGET_URL%" />

    <package id="Newtonsoft.Json" version="9.0.1" targetFramework="netstandard1.0" source="%NUGET_URL%" />
    <package id="NuGet.Common" version="5.8.1" targetFramework="netstandard2.0" source="%NUGET_URL%" />
    <package id="NuGet.Configuration" version="5.8.1" targetFramework="netstandard2.0" source="%NUGET_URL%" />
    <package id="NuGet.Frameworks" version="5.8.1" targetFramework="netstandard2.0" source="%NUGET_URL%" />
    <package id="NuGet.Packaging" version="5.8.1" targetFramework="netstandard2.0" source="%NUGET_URL%" />
    <package id="NuGet.Packaging.Core" version="5.8.1" targetFramework="netstandard2.0" source="%NUGET_URL%" />
    <package id="NuGet.Protocol" version="5.8.1" targetFramework="netstandard2.0" source="%NUGET_URL%" />
    <package id="NuGet.Resolver" version="5.8.1" targetFramework="netstandard2.0" source="%NUGET_URL%" />
    <package id="NuGet.Versioning" version="5.8.1" targetFramework="netstandard2.0" source="%NUGET_URL%" />

    <package id="NugetHelper" version="0.0.2" targetFramework="netstandard2.0" source="D:\GitRepositories" />

    <!-- Projects -->
    <project name="SlnLauncher" container="" />
    <project name="Slnx" container="Lib" />
</SlnX>
```
tools\LICENSE.txt

From: https://licenses.nuget.org/MIT

LICENSE

SPDX identifier
MIT

License text
 MIT License

Copyright (c) _____

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
tools\Microsoft.Extensions.FileSystemGlobbing.dll
md5: 8960EDB41F199EBD3F33C74CB603E2B3 | sha1: 2A893467403B6FED429954FB9D7044E678F77B86 | sha256: C6BA4C0E8DF96E0C33FE6FE4C14BCBF5200EC72120492C0EE7B462BA120B1E02 | sha512: 34A24706A04509343DC957E46378FACECB96BB9CB98737F784360D63CBAA31F7CF6CB72A24FD7499F9467ADD7FF22A95AB1FD799BD56C9CF21BF993D444DF4C4
tools\NDesk.Options.dll
md5: DA56F1211F7DEC41913719B608C95424 | sha1: 1314D264C8E8DBACAE4512710C92875D61957750 | sha256: 800C0AE0F2ACC15BE2C89528FE78CEA7400799D44FF14CB5A1251371F20C8982 | sha512: 9E671CF6199EBE9093AA29D3A4186D6F406E1C23C5EFB18D1CC4AE07AD32D0F945B10F180249ACEEE1B9B555C3504CDEAE67699CB3F2DFE7E78C8BB1EC676A8C
tools\Newtonsoft.Json.dll
md5: 04D49720DF76D62BCE434F19A0DA62D2 | sha1: 53D0A3B91036092132F4D0887500B5DC77891D78 | sha256: 5D96EE51B2AFF592039EEBC2ED203D9F55FDDF9C0882FB34D3F0E078374954A5 | sha512: 7727D077C518D4931B80286EDB981AF0E46D792CB9976DE286CD2DBB4270157C5FAE14766B2A39D49B44B41E5EC113DE104DD2264EDD1DC6799C9919B2F76D04
tools\NuGet.Common.dll
md5: C8089BB7F7E3D5E138B8F4429F3CB794 | sha1: 38C1AE1DE311D91ACD2A340CC9D7640EFD659B57 | sha256: E4A873266986A799B1EF97ADC376DA56711F240E1689472DA5C28DA61C7B2CFE | sha512: 54AC04522F60CAD6B0A1F888F31149D01CF67AC7FFD0B300B0935AF2B5EEABC89DC4999015C823163414EEB0860D163A8E958DEEF0EC6EF94EA4099CC786E615
tools\NuGet.Configuration.dll
md5: D7B1A32C0630DC92BA34E43A44B87548 | sha1: C7CB32F1F41C4395A16EEE00D3F4568C48540C37 | sha256: 6C0AB2EB7A4BDA01E4AC80B1B365113E81C1BE2560DC838D5128CA09E60F0196 | sha512: D1411A2051250208C6AFC5DDB9A5B073B9266929140D0A47BE3FA69FC6E3C2480CBF6851C77E0FF0FE4227BE41121BCCBA209519FA742274D8954B38C90FBA43
tools\NuGet.Frameworks.dll
md5: D701B436CFA7273A3E5E1915EB2B8C87 | sha1: BA63C909B72E0DBEDC6DE0C96195360C5E30CBD8 | sha256: 0BBAF590130247A7C1D9B0B86495322B5E841F2085B8A706D3762A68BC666418 | sha512: FEFD88C348C632EDE27B8B3EF349B533BB8B5D96892DC1F3443B1DC5B0D3D1BBDE96500D40E1654A49FECEF80BAFFC0C383AEF71D87BA21CA7A8CAD40E489319
tools\NuGet.Packaging.Core.dll
md5: A18E5EE909A710710F51A92755C8E574 | sha1: F7BBADDA856F2E2BFDE43ED132B1693261F937BE | sha256: D1EFB111542C379A8CF07C3413E845149168AE55237DE9F2978805194891C4FE | sha512: D0356FCFE5255BBE2461BCE3E3F975E3585D0BBB6563488F85A1C386E2A73F0CBF27E6E70836033A63A1F11ABF7CD2FCB44E50F170AEB919B7E3D0F24776D861
tools\NuGet.Packaging.dll
md5: 871B27C0D68AF6FEB0965BEECBEA71E8 | sha1: 3B4DE8F85FF112A34A7F973E83F030D1AD3B963F | sha256: EC909E470C7CCDDC97B315462AB4186ED424CD71F4954A34EDA20B9D6409DA3D | sha512: 934D046181A19EA99B5E3FDF8604E9116FED4B44D12AB9EB507DDE56D17A3B3A7A5FAFAB848A61AE466AC1A499AD3B3C197FF0F7C631B894D34258750834AA6F
tools\NuGet.Protocol.dll
md5: CCC5B08BFDD5A942E2B25B48D6702055 | sha1: C421252276EA02E5A9EC7490DC8A898A44371A0F | sha256: 4C3CCC0D0C2158CB6D2103B5BD21F9BCBA4EEC2D069D3A68DA877C63504CDD6F | sha512: 92FCC7105CBA1106F4636EC997F3D48ED1A33CF02FF7E07600DB0C212AD429B27B851DB3A2730F58AD9191FDAFAE0F063AA226F0AD42330ED316CD9BE8C5F209
tools\NuGet.Resolver.dll
md5: F47577FB30820ECD9BEB2D65C7C7CE3D | sha1: B546CB9BDB331BBB52289D67B73BE63D42E3F7C2 | sha256: C1CA8DB91384ABF4D3DFAB2AA43C7A79956B00C26BC0D793C3DEAEEBC5D93BC0 | sha512: 98EE0317A3D2175E38A5F6E020F36F4D79BC9A0F8EECABE73DAF04CBDB093442EEE325F453782333E2950580A036C3AC69A00BEE0BA48F9F17D47AC109F5470A
tools\NuGet.Versioning.dll
md5: 85D0801CE4FB048D794846CFC8F3BC46 | sha1: C5AAEAD8038172416511B5C22CD651CC98705CB8 | sha256: BFC22D6FEB354F6734ACBBB3A7B2A6A6FB71FDCBEC0B2C66B14F01B4C3DBD213 | sha512: 500DB432456B1DA2A35BA75475EABB5143F0310D43A6FDB331F264C124067CA615A7E37E8A0598FC33B01EBBEB3AFF39DF68C15D650E519270412A34ACFA989D
tools\NugetHelper.dll
md5: 460DE1145099365BB11C4736B3683C18 | sha1: 2F824E7544890CFA141E4435F0571ECF7035FFF5 | sha256: E2FADCF368F9F14E9949436D47AD180AB9C758F01F850FF3FEB7020C6E7D4FD8 | sha512: 8E4CA79AF6DA4E162211C50F54B85869D1160ED578914CD450D34AA2A7551DC4F91FB4E17F378EB7769F1AE146C5BE07558D04DE476988865A88485DBFCEF88B
tools\SlnLauncher.dll
md5: 66C4C67DCF627837CEA6288CE4F4BAD2 | sha1: 9C2602C8F7DFCC5903032342165E4BBEB5B978CD | sha256: BB754F579C78ADB9D6F5267B9716C50EB31C0C6C74986432BA78CD162AEE709D | sha512: C50FF6FA8E81DBA205413568AFA0CD7FDC6455ECCA3DACFE15C795E6EBAF2AA92F7153E95667DAD4E7B506BBB70BA5A39BA3F047F965E5F86646CF1DE83C920A
tools\SlnLauncher.exe
md5: 7BC4F6B8B81D2E474C3EC639EA9C949F | sha1: 74D84147ADE1555E4196BA917EBCAF714016E9B0 | sha256: 8CB1D3E4EC4BB8E55C33601624858A92D6B9E270A8BFAC760DB1F593C5F229F4 | sha512: 0FA3EFE9FFDEBD75B50DC398D825E254F14C5DDAC13E924232FD7C85C2E379DB736A2CDA201F118595E59FB100197DE4A2EE7552D26C7C7C8BEC7D47EF79FFDD
tools\SlnLauncher.runtimeconfig.json
{
  "runtimeOptions": {
    "tfm": "net5.0",
    "framework": {
      "name": "Microsoft.WindowsDesktop.App",
      "version": "5.0.0"
    }
  }
}
tools\Slnx.dll
md5: 3A58899B17853044FA0E79738AD974E5 | sha1: 156D7D43D31777029E6532A08D7FD4E87036DFE5 | sha256: C0B42A514127FCF2149C2EF6B28273BCF6478E518CD406026D4B30C6FFE6FAE9 | sha512: DAE0EC28205A1ADA27B60890875A9C34B5086BA4039E18A842AFBAB19960B092D3290904F7E037A2104A068873346046603315E6A5654967B92DD5178CD9028A
tools\VERIFICATION.txt

VERIFICATION
Verification is intended to assist the Chocolatey moderators and community
in verifying that this package's contents are trustworthy.
 
The owner of this package is also the author of the following binaries: Sln.dll, SlnLauncher.dll, NugetHelper.dll, SlnLauncher.exe
The following binaries are part of publicly distributed NuGet packages licensed either under the MIT or the Aapache2.0 licenses.
    package id="NDesk.Options" version="0.2.1"   
    package id="Newtonsoft.Json" version="9.0.1"
    package id="NuGet.Common" version="5.8.1"
    package id="NuGet.Configuration" version="5.8.1"
    package id="NuGet.Frameworks" version="5.8.1"
    package id="NuGet.Packaging" version="5.8.1"
    package id="NuGet.Packaging.Core" version="5.8.1"
    package id="NuGet.Protocol" version="5.8.1"
    package id="NuGet.Resolver" version="5.8.1"
    package id="NuGet.Versioning" version="5.8.1"

Log in or click on link to see number of positives.

In cases where actual malware is found, the packages are subject to removal. Software sometimes has false positives. Moderators do not necessarily validate the safety of the underlying software, only that a package retrieves software from the official distribution point and/or validate embedded software against official distribution point (where distribution rights allow redistribution).

Chocolatey Pro provides runtime protection from possible malware.

Add to Builder Version Downloads Last Updated Status
SlnLauncher (Portable) 3.1.3 74 Friday, May 13, 2022 Approved
SlnLauncher (Portable) 3.1.2 53 Tuesday, May 3, 2022 Approved
SlnLauncher (Portable) 3.1.1 64 Sunday, April 17, 2022 Approved
SlnLauncher (Portable) 3.1.0 60 Saturday, April 16, 2022 Approved
SlnLauncher (Portable) 3.0.1 52 Friday, April 15, 2022 Approved
SlnLauncher (Portable) 3.0.0 71 Friday, April 8, 2022 Approved
SlnLauncher (Portable) 2.4.1 207 Tuesday, September 7, 2021 Approved
SlnLauncher (Portable) 2.4.0 76 Saturday, September 4, 2021 Approved
SlnLauncher (Portable) 2.3.2 127 Sunday, May 2, 2021 Approved
SlnLauncher (Portable) 2.3.1 91 Monday, April 12, 2021 Approved
SlnLauncher (Portable) 2.2.3 91 Friday, March 12, 2021 Approved
SlnLauncher (Portable) 2.0.0 78 Thursday, February 18, 2021 Approved

This package has no dependencies.

Discussion for the SlnLauncher (Portable) Package

Ground Rules:

  • This discussion is only about SlnLauncher (Portable) and the SlnLauncher (Portable) package. If you have feedback for Chocolatey, please contact the Google Group.
  • This discussion will carry over multiple versions. If you have a comment about a particular version, please note that in your comments.
  • The maintainers of this Chocolatey Package will be notified about new comments that are posted to this Disqus thread, however, it is NOT a guarantee that you will get a response. If you do not hear back from the maintainers after posting a message below, please follow up by using the link on the left side of this page or follow this link to contact maintainers. If you still hear nothing back, please follow the package triage process.
  • Tell us what you love about the package or SlnLauncher (Portable), or tell us what needs improvement.
  • Share your experiences with the package, or extra configuration or gotchas that you've found.
  • If you use a url, the comment will be flagged for moderation until you've been whitelisted. Disqus moderated comments are approved on a weekly schedule if not sooner. It could take between 1-5 days for your comment to show up.
comments powered by Disqus