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 3.1.1:

64

Last Update:

17 Apr 2022

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

3.1.1 | Updated: 17 Apr 2022

Downloads:

1,196

Downloads of v 3.1.1:

64

Maintainer(s):

Software Author(s):

  • Giona Imperatori

SlnLauncher (Portable) 3.1.1

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 as a Note:

At least one file within this package has greater than 0 detections, but less than 5

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="'3.1.1'" [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="'3.1.1'" 
$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: '3.1.1'
    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  '3.1.1'
end

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


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

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


package { 'slnlauncher':
  ensure   => '3.1.1',
  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 as a trusted package on 17 Apr 2022.

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://github.com/igiona/slnlauncher/blob/master/Icon/SlnLauncher.png?raw=true" width="100">

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

The SlnLauncher is a tool that allows to dynamically 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 and referencing 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.

Additionally, 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>
The Choco package can be installed via [chocolatey](https://community.chocolatey.org/packages/slnlauncher).<br>
The release notes can be found here: https://github.com/igiona/slnlauncher/releases

``` PowerShell 
choco install slnlauncher
```

# 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 |


# Important notes

- Starting from the v3.0.0 of the tool, legacy-style projects are not supported anymore.
Upgrade them to the Microsoft.NET.Sdk style. You will love it :)<br>
You can build .NET project with the new style as well. It's not a .NET Core-thing only!

# How it works?

The SlnX file fed 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 and their NuGet references
* 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

- - -

**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.

- - -

## NuGet packages, not as PackageReference in project files
The SlnLauncher finds the NuGet packages you specify, and downloads them. 
Why? 
Why not just giving a reference to the NuGet packages in the C# projects, for example using the NugetManager of VisualStudio?

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 occurs and Visual Studio at most produces a warning.
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 available to all the projects.
If a collision occurs, tool makes you aware of that and then it is up to you to resolve it :-)

There are essentially two ways to reference the content of a package:
* [NuGet package can be used as assemblies collection, and not as NuGet packages](#NuGetNotAsNuGet)
* [NuGet package as injected package-reference](#NuGetAsNuGet)

### <a name="NuGetNotAsNuGet"></a>NuGet packages, not as NuGet packages
As per projects, a similar approach is used for the referenced assembly files.<br>
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="NuGetAsNuGet"></a>NuGet packages, as NuGet packages but...
Starting from the version 3 of the tool, NuGet package references can be specified within the SlnX file (see [<ref>](#refElement)).<br>
The SlnLauncher will then configure the projects to reference the packages as PackageReference.<br>
This is achieved via a helper import file automatically created & referenced by the tool.

This approach has the advantage of not having to necessarily import runtime DLLs, or to exactly know which DLL is required to compile a certain feature.

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

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

But what about refactoring?

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 intended to debug/refactor.

- - -

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

- - -

``` XML
<debug>*PathToMyPackageRepo*\MyPackageRepo.slnx<debug>
```

<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 there is more to it: the tool will also create a file called *slnx.config* 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 seamlessly for you.

## Known limitations and issues

* Only projects in the Microsoft.NET.Sdk format are supported.<br>
Workaround: Update your project files, you and your team will only profit of it :-)
* Only one nuspec can be generated per SlnX file<br>
Workaround: use multiple SlnX files, one per application.
* Only one target-framework per SlnX file
This means that you cannot build a VisualStudio solution that contains a .Net framework project and a .Net Core project at the same time.<br>
Workaround: use multiple SlnX files, one per application.
* 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.<br>
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/PowerShell file exactly to do so :-) !

# <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                                                                                                                                                                                                                                                                                                                                                               |
| -------------------- | ----- | ------- | --------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| help                 | h     | boolean | No        | false   | If set, it prints the list of command and exits.                                                                                                                                                                                                                                                                                                                          |
| 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.                                                                                                                                                                                                                                           |
| slnxProjects         | p     | boolean | No        | false   | If set (-p/-p+) it creates a SlnX file with all project and their reference in the SlnX location.                                                                                                                                                                                                                                                                         |
| keepGenerated        | k     | boolean | No        | false   | If set (-k/-k+) it prevent the cleanup of all the slnx.config generated files. Note: this doesn't prevent the files to be overwritten.                                                                                                                                                                                                                                    |
| 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.                                                                                                                                                                                             |
| logVerbosity         | lv    | string  | No        | Warning | Set the log level of verbosity. Valid values: None,Fatal,Error,Warning,Info,Debug,Trace.                                                                                                                                                                                                                                                                                  |
| 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.                                                                                                                                                                                                  |
| powershellModule     | ps    | string  | No        | null    | If set, \<value> is used as relative (to the SlnX file) folder path for the creation of the power-shell module (SetEnvVars.py1) 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:<br> >nuget pack \<value>\\\<SlnxName>.nuspec |
| 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    | <a name="nugetForceMinVersion" /> If set, the tool will check that all the packages dependencies fulfill 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.                      |
| user                 | u     | boolean | No        | true    | If set (-u/-u+) it loads an eventually present .user file.                                                                                                                                                                                                                                                                                                                |
| offline              |       | boolean | No        | true    | If set (-offline/-offline+), The current SlnX packagesPath attribute will be used as source for all packages. In this way no internet connection is required.                                                                                                                                                                                                             |
| choco                | c     | string  | No        | null    | To be implemented....                                                                                                                                                                                                                                                                                                                                                     |
|                      |       | 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 criteria, 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.                                       |
| \<*project-id*>\_framework | The *targetFramework* of the specified 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" source="http://somesource" /> <!-- Provide a net45 and net5 target -->
    <project name="My.Project.Name" container="" /> <!-- Target net48 -->
    ...
```
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 | net45                                                                              |
| My\_Package\_Id\_debug     | 1: if the NuGet package is marked 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>
            <item targetFramework="net45">**\SomeDll.dll</item>
            <item targetFramework="net45">**\*.dll</item>
        <info>
        </info>
    </nuget>
    <env name=""></env>
    <package id="MyPackage" version="0.2.1" source="https://..." dependencySources="https://..." />
    <project name="SlnLauncher" container="">
        <ref>MyPackage</ref>
    </package>
    <debug />
</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 required 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/folder/files to be added to the nuspec.

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

### <a name="ItemElement"></a> item 
Value that defines one or multiple assemblies, folder or files 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") |
| targetFolder    | -       | Directory relative to the NuGet package root in which the specified file(s) will be copied into.       |

- - -

**NOTE**
* The first assembly file (.dll/.exe) will be used to retrieve the NuSpec version number.
* targetFramework and targetFolder are exclusive in each item element
* targetFolder should not be used to place assemblies under the lib/ folder
- - -
<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 overridden 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 previously set value.

- - -

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

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

Definition 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))                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| customPath                  | *none*  | Valid only if IsDotNetLib is set to false. It will be used to set the package full-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| source                      | -       | The URI or local path in which the NuGet package will be searched. If specified, the tool always searches in this location first, it searches in the default locations (nuget.org) only if the package is not found here or in the dependencySources list.                                                                                                                                                                                                                                                                                                                                                                                                         |
| dependencySources           | -       | Additional comma-separated URI(s) or local path(s) used to search for dependency packages. Useful if the dependencies are not located in the same source as the main package.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| 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 recognized as "implementation assembly" package<br>"\<package-install-path>\ref\\\<targetFramewok>" if the package is recognized 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 desired directory. |
| dependenciesForceMinVersion | true    | If set to false, will disable the nugetForceMinVersion for the current package dependencies. Refer to the <a href="#nugetForceMinVersion">nugetForceMinVersion</a>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| var                         | *none*  | Deprecated. Will be removed in future releases.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
<br>

### project

Definition 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". |

| Child node | Default | Description                         |
| ---------- | ------- | ----------------------------------- |
| ref        | *none*  | Zero of more of [ref](#refElement). |
<br>
- - -

**NOTE:**
The tool evaluates the \<IsPackable\> element within the CsProj file (Microsoft.NET.Sdk style projects only!).<br>
If set to false, this project is not being considered in the generation of the nuspec file.<br>
Useful to avoid to include test assemblies in the package.<br>
Additionally, if a dependency package is not referenced or is referenced only by non-packable packages, it will be excluded from the nuspec dependency list.
- - -
<br>

### <a name="refElement"></a> content 
Id of the NuGet package to be referenced.
<br>

### debug

Path to the location of the SlnX file to be used to debug a NuGet package.

| Attribute | Default        | Description                                                                                                            |
| --------- | -------------- | ---------------------------------------------------------------------------------------------------------------------- |
| package   | SlnX file name | The name of the NuGet package required to be debugged.<br>If not specified, the name of the provided SlnX file is used |
<br>
The following statements are equivalent:

``` XML
   <debug>nugethelper\NugetHelper.slnx</debug>
   <debug package="NugetHelper">nugethelper\NugetHelper.slnx</debug>
```

<br>

### import

Definition of a set of NuGet packages.

| Attribute | Default | Description                                                                                                                                                                                                                                          |
| --------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| path      | *none*  | Path to another SlnX file to be included.<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 overridden.                                                                                                                |
<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" customPath="lib" IsDotNet="false" source="%NUGET_URL%" />

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

    <package id="NugetClientHelper" version="1.0.0" source="%NUGET_URL%" />

    <!-- Projects -->
    <project name="SlnLauncher" container="">
        <ref>NugetClientHelper</ref>
    </project>
    <project name="Slnx" container="Lib">
        <ref>NugetClientHelper</ref>
    </project>
</SlnX>
```
tools\Glob.dll
md5: DEBA6B01FD3E601EC39CA645E1281618 | sha1: CA1D3FEF0F7E4E4C03EB63C419B73473B3084E69 | sha256: 9542C53426E7191CCBE0F80838822FC621A3B1ACCA3FFA79004245E525AD49A4 | sha512: C7B466F89F468FE4342CCC292B8987A84AF2297B67FF58ACC4BF74ED487C28471F8F4FDD58FC350828A271B228BB291561743C1AF332C5D3AE67BB80BB4E4DCB
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\NDesk.Options.dll
md5: DA56F1211F7DEC41913719B608C95424 | sha1: 1314D264C8E8DBACAE4512710C92875D61957750 | sha256: 800C0AE0F2ACC15BE2C89528FE78CEA7400799D44FF14CB5A1251371F20C8982 | sha512: 9E671CF6199EBE9093AA29D3A4186D6F406E1C23C5EFB18D1CC4AE07AD32D0F945B10F180249ACEEE1B9B555C3504CDEAE67699CB3F2DFE7E78C8BB1EC676A8C
tools\Newtonsoft.Json.dll
md5: 916D32B899F1BC23B209648D007B99FD | sha1: E3673D05D46F29E68241D4536BDDF18CDD0A913D | sha256: 72CF291D4BAB0EDD08A9B07C6173E1E7AD1ABB7AB727FD7044BF6305D7515661 | sha512: 60BD2693DAA42637F8AE6D6460C3013C87F46F28E9B0DBF9D7F6764703B904A7C8C22E30B4BA13F1F23F6CBEE7D9640EE3821C48110E67440F237C2BB2EE5EB6
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: 65C89920611D3646BCACCBA354C02B08 | sha1: B871C8216A7C3CDE2FE5AFD64D7B157596173FAD | sha256: CBF66BB3B82FBBDAA4CD12D7758E00400F14EB3AB1EF6CCC417AA95C7F1F7CFB | sha512: 3CEE689151078C07D70FB8C2C51ACAC1C3D0E73B7D3BD683875EC6B373771F316479E771CBD661095B804B276B561A8FEFE83EB1D6BD69A0A6306CE377E6E281
tools\NuGet.Packaging.dll
md5: B23788FF7F389ABB51CE7D8164165ECF | sha1: 90393CEB564BD88AB8DA97229E46353C5C65B403 | sha256: 6BED5DEE3D2545E71707A78ED75FD6F0D5939F58829A86CC886B16232DB40D8B | sha512: 5EAED75E486CEDFBF868276650B1E433406E557B1AA3315F3715E4E2D7C49EF7F281A9C1F6B04E1D9CCE30579F6CF13F3493B55E400D216A03EBC6CC44AB9B71
tools\NuGet.Protocol.dll
md5: C867D8A84C94AB2B977132FE7D5BB83E | sha1: 6D1557564655FBF007132D0850F79E9C3D396318 | sha256: F5215942511E8656FD869963AF16964ED01B399B4933CB6CBAD9DBAA7CC7310E | sha512: 04D4EC3C4B5901A2439430AA51DE62A6584CF9E0BFA3E8EA2ACED577C81C67F15862677099239D58F5C115694B34F2D4C6974E06C95600F251D515D9C59B1D12
tools\NuGet.Resolver.dll
md5: D4112A01563F16703C0AA2D0A28EBED4 | sha1: 2AD51459332F5F461EF9F81B862AD82448CD53DB | sha256: DFE5C3517B7FB31A6BE5DCB332FB81BEA3A6ED5179F75C9056B8606FAC3FB98F | sha512: 3C668D68220BC2170C946D929EA9B47E522673978A7BF99D7E8EABFA45B8C24B36CE46AB0FD442D89D50A4266402C805B62EE7CFE4CCA0424FACEE898E2E2E23
tools\NuGet.Versioning.dll
md5: 85D0801CE4FB048D794846CFC8F3BC46 | sha1: C5AAEAD8038172416511B5C22CD651CC98705CB8 | sha256: BFC22D6FEB354F6734ACBBB3A7B2A6A6FB71FDCBEC0B2C66B14F01B4C3DBD213 | sha512: 500DB432456B1DA2A35BA75475EABB5143F0310D43A6FDB331F264C124067CA615A7E37E8A0598FC33B01EBBEB3AFF39DF68C15D650E519270412A34ACFA989D
tools\NuGetClientHelper.dll
md5: 59C587C56664C823B9D530D81ABDB58B | sha1: 9385669D7A0C705EE477E4BA99A463E2B82C6312 | sha256: 0ECB50EFE9D272140A7B1FE4D3D0456B8B14B8635A56039E61881981E1AF4A8A | sha512: 53F2C1488372C1C9A14ACF5C8CCD7261B3CB1A1AF2F0DD98666602C2FCB82A00D214582DCD3A2A6B69F70AB2D350A227A90EEC432C4AA3B895FCC55A688343CA
tools\SlnLauncher.dll
md5: 214C92378C73BE8F1294B7119997AED2 | sha1: 2C0BCAA3A1CBA9A51485A2C39DC9E18EB2D0DB88 | sha256: A7D574EFA925745471B4DC9250EE185CB2D89793E37E6AA2ECAF631CBA4E5A7E | sha512: B4A06C3D4D33EDAAD9E085776F6B8B448A39AEFCC41D16DBF95348DD77A09791EF9A525BE0FD0ED627E079FD5442B612C305850F3EE717CF7A2F7C78C5B9F120
tools\SlnLauncher.exe
md5: 38897C7348F1892A37B3DBDB42AC0A7F | sha1: FCF1D6701491D52AF29E94FD82243AB6CA41AB6E | sha256: D3F5651C2E7F9031272071C8A02D5F35A847898B1728CFD8C8B2F8C89AE0188A | sha512: 5B88AAA0223C5738345AA4DB1AB569BB8FCEADCACADEC9B0ED5A7A0B5E7E958B3730BC01669D845DD27D086FB8262D212325C59B770ADD29F16047295E0C0454
tools\SlnLauncher.runtimeconfig.json
{
  "runtimeOptions": {
    "tfm": "net5.0",
    "framework": {
      "name": "Microsoft.WindowsDesktop.App",
      "version": "5.0.0"
    }
  }
}
tools\Slnx.dll
md5: 3559858E95B455577ECEF0B30EE509E1 | sha1: 40266360653928C6B5403EF4DCF2F838FB58FA26 | sha256: 93ADDAC91F2610EBB0630737383CA02C7EDAF2E555999F1B215185F0CE593BA2 | sha512: F0D5118DAF719CADC95A42643BF89FFD83FCB16E790BE8EAAEA6EAFCE686E5CAD369216832365E1B3F5E59E1945FD2991CADA280F9EF40B8F34C8266F0A1D855
tools\System.IO.Abstractions.dll
md5: D029B0525F7AD4D38893F3089D51FF2A | sha1: BC9AE6515D2E6A56692F7C543C3E93BD83072501 | sha256: 6CC11F3A7E3B5A05D08E329E90DDF464746C3C0BF553020824EC5AA9A63121C6 | sha512: FC9D010335950E7FB2D10E9A844670186AB762BAA35F3210065FF6AC20B9ED5B6E95E37305ACBE31B6833F12794A4F13968A73B196335CE6E16313D61261F349
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