Downloads:

107

Downloads of v 2.3.2:

44

Last Update:

02 May 2021

Package Maintainer(s):

Software Author(s):

  • Giona Imperatori

Tags:

.NET c# NuGet visual studio git multi repo

SlnLauncher (Portable)

  • 1
  • 2
  • 3

2.3.2 | Updated: 02 May 2021

Downloads:

107

Downloads of v 2.3.2:

44

Maintainer(s):

Software Author(s):

  • Giona Imperatori

  • 1
  • 2
  • 3
SlnLauncher (Portable) 2.3.2

  • 1
  • 2
  • 3

All Checks are Passing

3 Passing Tests


Validation Testing Passed


Verification Testing Passed

Details

Scan Testing Successful:

No detections found in any package files

Details

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:

>

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

1. Ensure you are set for organizational deployment

Please see the organizational deployment guide

  • 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. Enter your internal repository url

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

4. Choose your deployment method:


choco upgrade slnlauncher -y --source="'STEP 3 URL'" [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="'STEP 3 URL'"
$exitCode = $LASTEXITCODE

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

Exit $exitCode

- name: Ensure slnlauncher installed
  win_chocolatey:
    name: slnlauncher
    state: present
    version: 2.3.2
    source: STEP 3 URL

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


chocolatey_package 'slnlauncher' do
  action    :install
  version  '2.3.2'
  source   'STEP 3 URL'
end

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


Chocolatey::Ensure-Package
(
    Name: slnlauncher,
    Version: 2.3.2,
    Source: STEP 3 URL
);

Requires Otter Chocolatey Extension. See docs at https://inedo.com/den/otter/chocolatey.


cChocoPackageInstaller slnlauncher
{
   Name     = 'slnlauncher'
   Ensure   = 'Present'
   Version  = '2.3.2'
   Source   = 'STEP 3 URL'
}

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


package { 'slnlauncher':
  provider => 'chocolatey',
  ensure   => '2.3.2',
  source   => 'STEP 3 URL',
}

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


salt '*' chocolatey.install slnlauncher version="2.3.2" source="STEP 3 URL"

See docs at https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.chocolatey.html.

5. If applicable - Chocolatey configuration/installation

See infrastructure management matrix for Chocolatey configuration elements and examples.

This package was approved as a trusted package on 02 May 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>*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 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.                                                                                                                                                                                         |
| 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.                                                                                                                                                                                              |
| 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    | <a name="nugetForceMinVersion" /> 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.                  |
| 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.                                                                                                                                                                                                         |
|                      |       | 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>
            <item targetFramework="net45">**\SomeDll.dll</item>
            <item targetFramework="net45">**\*.dll</item>
        <info>
        </info>
    </nuget>
    <env name=""></env>
    <package id="" version="0.2.1" targetFramework="" source="https://..." dependencySources="https://..." />
    <project name="SlnLauncher" container="" />
    <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 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/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") |

- - -

**NOTE**
The first assembly file (.dll/.exe) will be used to retrieve the NuSpec version number.
- - -
<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. 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 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. |
| 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

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

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 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\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: 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: EDB7D5A30AB38B0544530AF135C36E00 | sha1: 91E874753370F15A66A07C4125FDBF27924B02C8 | sha256: 31F7BB358D29C8257CC3408430232378695963E42270ABB3ABA3FCB692AC474B | sha512: 88233B322F10DDBD046B3644ED1A1F434C7559191F7E985D16EA00CA208A6B664071B846B1DD8CD767FEEB374AC83A7E337D9202CA397A1D5B42272C48042F81
tools\SlnLauncher.dll
md5: F2FC982A1D086633027C5D6995E32E02 | sha1: 3D116641EC32CFFD652401E5A1FABA089923883F | sha256: 98BB08790500C183EC83E92703BC91CE5F27C306580B14A4DA88A357EFFED238 | sha512: 0F12FB32E398D62C7212C8D2898E58C0902D5A080F3B784F5ACCAB560D94C5EDE1A8BC32F87E0A8A87330705E7F129890D90A4C5E4F66DE17B5C7EBA28A87909
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: D1840A7B1066ED5D25C389D5BA130588 | sha1: 5CF8554CE4CB0FE4EBACA0A6A39E42572930D6F2 | sha256: FFD40DD87DD4EF59511918893122B099F167B1833A03C8FAE28E4ECFE5D756A6 | sha512: A97EBCC929289A48B1E1E2781D013C7641446E3132E3CEB8976CB71E556F0C4C35D4337042A7C122B2AFBDD4580BBBA6A36C10C171B53E05ACD829865BE3931A
tools\System.IO.Abstractions.dll
md5: 26137265BD71BEA2A98709936A8D33BA | sha1: C4677B325DE8CE312E3B6C61FEAC263DA8AF7DF0 | sha256: 9355423D31E59CDE473FE5C47D0E30C7A776CEA98DD778A4A86EA9C1A30AF963 | sha512: 45EE345D27734C0DB5D7E942C30BEC9DF0AD24D49AAF7C2C97C6E7E712F2C424B1A799D20BEC35B3855893975126ADE23EFEEB2AA03F942A5755380CBEAB050B
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.

Version Downloads Last Updated Status
SlnLauncher (Portable) 2.3.1 22 Monday, April 12, 2021 Approved
SlnLauncher (Portable) 2.2.3 23 Friday, March 12, 2021 Approved
SlnLauncher (Portable) 2.0.0 18 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