Nugget visual studio 2017


Page not found · GitHub Pages

Page not found · GitHub Pages

File not found

The site configured at this address does not contain the requested file.

If this is your site, make sure that the filename case matches the URL.For root URLs (like http://example.com/) you must provide an index.html file.

Read the full documentation for more information about using GitHub Pages.

blog.nuget.org

Visual Studio 2017 and Swagger: Building and Documenting Web APIs

The OpenAPI ‘Swagger’ Specification defines a protocol that allows applications to discover, and generate documentation of methods, parameters and models of REST APIs, This provides a way for any software to identify the features of a REST API. It does for REST APIs what WSDL (Web Service Description Language) did for web services. Visual Studio now provides it to support proxy creation for REST APIs, as Dennes Torres explains.

Swagger is a technology-agnostic standard that allows the discovery of REST APIs, providing a way for any software to identify the features of a REST API.

This is more important than it seems: It’s a game changing technology, in the same way that WSDL (Web Service Description Language) has been for web services.

WSDL has been the fundamental technology that made it possible for tools and IDEs such as Visual Studio to understand web services and to create proxy classes. This feature turns the consumption of web services into a high-level task, encapsulating all protocol details.

That’s the importance of Swagger: It’s able to do for REST APIs what WSDL has already done for web services, by allowing the creation of proxies and by making the use of web APIs much easier.

VS 2017 includes support for REST API proxy creation using Swagger protocol. It’s still in an early stage and lacking some features, however this is a great step towards the broader adoption of Swagger.

We’ll create an example of how we can use Swagger with VS 2017 in order to analyze the advantages and the missing features.

As well as VS 2017, we will also need IIS (Internet Information Server) installed in the development machine for our example.

Development Environment

You can enable IIS as a Windows feature or server role depending if you are using a client operating system or a server one.

Starting Application

Before we can use Swagger, we need a demo solution with a web API project. Let’s build this starting solution before we go on to implement Swagger.

  1. Create an ASP.NET Web API project
    1. Inside Visual Studio, select ‘File’ -> ‘New Project’ menu
    2. In the ‘New Project’ dialog box, inside the left side tree view, select ‘Installed’ -> ‘Templates’ -> ‘Visual C#’ -> ‘Web’ tree items.
    3. In the ‘New Project’ dialog box, in the right side, select ‘ASP.NET Web Application (.NET Framework)’
    4. In the ‘Name’ textbox, type ‘webDemo’

    5. In the ‘Solution Name’ textbox, type ‘slDemo’ and click the ‘Ok’ button
    6. In the ‘New ASP.NET Web Application’ window, below ‘ASP.NET 4.5.2 Templates’, select ‘Web API’ and click the ‘Ok’ button

  2. Configure the Web API project to use the local IIS
    1. In the ‘Solution Explorer’ window, right-click on ‘webDemo’ project and click the ‘Properties’ menu item.
    2. In the right side of ‘webDemo’ properties window, click ‘Web’ page
    3. In the combobox below ‘Servers’, select ‘Local IIS’

    4. Click the ‘Create Virtual Directory’ button
    5. Close the ‘webDemo’ properties page

This project already has a sample web API controller developed, but we need to make some changes. Let’s examine the details of the existing controller and make those changes.

  1. Analyzing and changing the existing API Controller
    1. In the ‘Solution Explorer’ window, inside ‘webDemo’ project, open the ‘Controllers’ folder and check the existing controllers.

    2. Double-click the ‘ValuesController.cs’ file and check the existing actions. This is the only web API controller in the project.
    3. Change the ‘ValuesController’ class for the code below. We are completing the PUT action and storing the list inside Application memory area.

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

          public class ValuesController : ApiController

            {

                private string[] lista

                {

                    get

                    {

                        if (System.Web.HttpContext.Current.Application[<em>"lista"</em>]==null)

                        {

                            System.Web.HttpContext.Current.Application[<em>"lista"</em>] =

                                new string[] { <em>"value1"</em>, <em>"value2"</em> };

                        }

                        return

                            (string[])System.Web.HttpContext.Current.Application[<em>"lista"</em>];

                    }

                }

                public IEnumerable<string> Get()

                {

                    return lista;

                }

                public string Get(int id)

                {

                    return lista[id];

                }

                public void Post([FromBody]string value)

                {

                }

                public void Put(int id, [FromBody]string value)

                {

                    lista[id] = value;

                }

                public void Delete(int id)

                {

                }

            }

  2. Execute the application and analyze the result
    1. Click ‘Start’ button in the toolbar to execute the application
    2. On the web page just opened, click ‘API’ link in the top menu. You will notice the API operations, basically a CRUD with two GET’s, one POST, PUT and DELETE

    3. In the browser navigation bar, type a new URL: http://localhost/webDemo/API/Values . As a result, a JSON file will be downloaded, therefore the web API is working fine.

Including Swagger in our project

Swagger is a technology agnostic protocol. For each technology, we need some tool to implement the protocol. SwashBuckle is the name of the tool for .NET. There is a version for .NET before 4.5 and another version for .NET after 4.5.

Let’s do a step-by-step walkthrough to implement Swagger using SwashBuckle:

  1. Include SwashBuckle nugget package in the web API project
    1. In the ‘Solution Explorer’ window, right-click the ‘webDemo’ project and click ‘Manage nuget packet’ menu item.
    2. In the ‘Nuget Package Manager’ window, select ‘Browse’
    3. In the textbox inside ‘Nuget Package Manager’ window, type ‘SwashBuckle’.
    4. In the left side of ‘Nuget Package Manager’ window, select ‘SwashBuckle.Net45’ package

    5. In the right side of the ‘Nuget Package Manager’ window, click the ‘Install’ button.
    6. In the ‘Review Changes’ window, click the ‘Ok’ button.
    7. In the ‘License Acceptance’ window, click ‘I Accept’ button.
    8. Close the ‘Nuget Package Manager’ window
  2. Configure the XML documentation. SwashBuckle will use the XML documentation to describe the WEB APIs actions.
    1. In the ‘Solution Explorer’ window, right-click the ‘webDemo’ project and click the ‘Properties’ menu item.
    2. In the ‘webDemo’ window, click ‘Build’ page
    3. In the ‘webDemo’ window, below ‘Output’, click ‘Xml Document File’ checkbox. In the textbox at right you will see the path ‘bin\webDemo.xml’.

    4. In the ‘Solution Explorer’ window, inside ‘webDemo’ project, open the ‘Controllers’ folder and double click ‘ValuesController.cs’ file.
    5. Let’s create an XML documentation for each action and the controller. Over each action and also over the controller declaration, type ‘///’ and describe the action and the controller.

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      40

              /// <summary>

                /// Retrieves the list of values

                /// </summary>

                /// <returns></returns>

                public IEnumerable<string> Get()

                {

                    return lista;

                }

                /// <summary>

                /// Retrieves one value from the list of values

                /// </summary>

                /// <param name=<em>"id"</em>>The id of the item to be retrieved</param>

                /// <returns></returns>

                public string Get(int id)

                {

                    return lista[id];

                }

                /// <summary>

                /// Insert a new value in the list

                /// </summary>

                /// <param name=<em>"value"</em>>New value to be inserted</param>

                public void Post([FromBody]string value)

                {

                }

                /// <summary>

                /// Change a single value in the list

                /// </summary>

                /// <param name=<em>"id"</em>>The id of the value to be changed</param>

                /// <param name=<em>"value"</em>>The new value</param>

                public void Put(int id, [FromBody]string value)

                {

                    lista[id] = value;

                }

                /// <summary>

                /// Delete an item from the list

                /// </summary>

                /// <param name=<em>"id"</em>>id of the item to be deleted</param>

                public void Delete(int id)

                {

                }

  3. Configure SwashBuckle. For now, the only configuration we need to do is the path of the XML documentation.
    1. In the ‘Solution Explorer’ window, inside ‘webDemo’ project, open the ‘App_Start’ folder and double click ‘SwaggerConfig.cs’ file. This file was included in the project by the ‘SwashBuckle.Net45’ nuget package.

      The ‘Register’ method of the ‘SwaggerConfig’ class is configured to be executed as a ‘PreApplicationStartMethod’.

    2. Include the following method inside ‘SwaggerConfig’ class:

              protected static string GetXmlCommentsPath()

                {

                    return System.String.Format(@"{0}\bin\webDemo.XML",

                        System.AppDomain.CurrentDomain.BaseDirectory);

                }

    3. Uncomment the following block of code inside the “Register” method:

                              c.IncludeXmlComments(GetXmlCommentsPath());

  4. Execute and test the application
    1. Execute the application, click the ‘Start’ button in the toolbar.
    2. Type the following URL in the browser address bar: http://localhost/webDemo/Swagger/ui/index
    3. On the Swagger documentation page, click ‘Values’, the name of the controller.

    4. Click each operation to see the documentation. You may notice that Swagger is using the XML documentation description for each operation.
    5. Type the following URL in the browser address bar: http://localhost/webDemo/Swagger/docs/v1 . This time we are looking for the JSON document describing the web API, the core result of SwashBuckle
    6. In the question that will appear, click the ‘Save’ button (I’m using Chrome, this can be a bit different with other browsers)
    7. In the message that will appear, click ‘Open Folder’ button. (I’m using Chrome, this can be a bit different with other browsers)
    8. Open the v1.json file with Notepad. The file won’t be well formatted, the content, however, is a description of the web API, such as you can see in the image below. If you would like so, you can open the file in Visual Studio to see a well-formatted version of the file.

    9. Stop the execution in Visual Studio

Creating the Client Project

Now it’s time to create a client to consume our web API and illustrate how this consumption will be a lot easier.

  1. Add a new Windows Desktop project to the solution
    1. In Visual Studio, click ‘File’ -> ‘Add’ -> ‘New Project’ in the menu
    2. In the ‘New Project’ dialog box, inside the left side tree view, select ‘Installed’-> ‘Templates’ -> ‘Visual C#’ -> ‘Windows Classic Desktop’ tree items.
    3. In the ‘New Project’ dialog box, in the right side, select ‘Windows Forms App (.NET Framework)’
    4. In the ‘Name’ textbox, type ‘winClient’ and click the ‘Ok’ button
  2. Add a reference to the web API and create the proxy
    1. In the ‘Solution Explorer’ window, right-click the ‘winClient’ project, click ‘Add’ -> ‘REST API Client’ menu item.

    2. In the ‘Add REST API Client’ window, ‘Swagger Url’ textbox, type http://localhost/webDemo/Swagger/docs/v1 .
    3. In the ‘Client Namespace’ textbox, type ‘SvcRest’ and click the ‘Ok’ button.

      It seems that nothing happened. Inside ‘Web Publish Activity’ window you will be able to see what happened and an error message: ‘Found operation object with duplicate OperationId ‘Values_Get’. OperationId must be unique among all operations described in the API’.

      The client tool doesn’t support a REST API with operation overload, and our demo API has two GET methods. We need to resolve this problem before we proceed.

Support for operation overload

This lack of support for operation overload is a big flaw, since even the demo web API application, as you may be noticing, uses operation overloads, it has two GET actions, with and without a parameter.

There are two possible solutions:

  • Change the actions name to avoid an overload
  • Implement an operation filter that will intercept the JSON file creation and avoid the overload inside the JSON file.

Let’s implement an operation filter in a step-by-step walkthrough:

  1. Add a new Class Library to the solution
    1. In the ‘Solution Explorer’ window, right-click the solution, click ‘Add’->‘New Project’ context menu item
    2. In the ‘New Project’ dialog box, inside the left side tree view, select ‘Installed’->‘Templates’->‘Visual C#’ ->‘Windows Classic Desktop’ tree items.
    3. In the ‘New Project’ dialog box, in the right side, select ‘Class Library (.NET Framework)’
    4. In the ‘Name’ textbox, type ‘libTools’ and click the ‘Ok’ button

    5. In the ‘Solution Explorer’ window, right-click ‘Class1.cs’ file, below ‘libTools’ project, and click ‘Delete’ menu item.
  2. Install the package ‘SwashBuckle.Core.Net45’ in the new Class Library project. I’m installing only the core of SwashBuckle, not all the libraries.
    1. In the ‘Solution Explorer’ window, right-click the ‘libTools’ project and click ‘Manage nuget packet’ menu item.
    2. In the ‘Nuget Package Manager’ window, select ‘Browse’
    3. In the textbox inside ‘Nuget Package Manager’ window, type ‘SwashBuckle’.
    4. In the left side of ‘Nuget Package Manager’ window, select ‘SwashBuckle.Core.Net45’ package
    5. In the right side of ‘Nuget Package Manager’ window, click ‘Install’ button.
    6. In the ‘Review Changes’ window, click the ‘Ok’ button.
    7. In the ‘License Acceptance’ window, click ‘I Accept’ button.
  3. Implement the operation filter
    1. In the ‘Solution Explorer’ window, right-click ‘libTools’ project, click ‘Add’-> ‘Class…’ context menu item
    2. In the ‘Add New Item’ window, type ‘MultipleOperationsWithSameVerbFilter.cs’ in the ‘Name’ textbox.

    3. Copy the code below and paste inside the new file, replacing the empty class:

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

          using Swashbuckle.Swagger;

            using System.Web.Http.Description;

            public class MultipleOperationsWithSameVerbFilter : IOperationFilter

            {

                public void Apply(

                    Operation operation,

                    SchemaRegistry schemaRegistry,

                    ApiDescription apiDescription)

                {

                    if (operation.parameters != null)

                    {

                        operation.operationId += "By";

                        foreach (var parm in operation.parameters)

                        {

                            operation.operationId += string.Format("{0}",

                                parm.name);

                        }

                    }

                }

  4. In the ‘webDemo’ project, add a reference to the ‘libTools’ project
    1. In ‘Solution Explorer’ window, right-click ‘webDemo’ project, click ‘Add’-> ‘Reference’ context menu item
    2. Inside ‘Reference Manager’ window, on the left side, select ‘Projects’ -> ‘Solution’ item
    3. Inside ‘Reference Manager’ window, on the right side, check the box besides ‘libTools’ and click the ‘Ok’ button

  5. Change Swagger configuration to use the new operation filter
    1. In the ‘Solution Explorer’ window, inside ‘webDemo’ project, open the ‘App_Start’ folder and double click ‘SwaggerConfig.cs’ file.
    2. At the top of ‘SwaggerConfig.cs’ file, add the following line:
    3. Inside the ‘Register’ method, inside the following block:

                  GlobalConfiguration.Configuration

                        .EnableSwagger(c =>

                            {

      Add the following line of code:

                              c.OperationFilter<MultipleOperationsWithSameVerbFilter>();

  6. In the ‘Solution Explorer’ window, right-click the solution and click ‘Rebuild Solution’ menu item

  7. Repeat the step 2 of the client proxy creation, this time it will work.

Using the proxy in the Client Application

Now the web API proxy is built inside the client project, it’s time to use it to access the web API. However, the proxy needs an additional class to control authentication. Another flaw in this feature is the fact it doesn’t deal well with anonymous authentication, but we can overcome this problem with a quick fix.

  1. Install the ‘Microsoft.Rest.ClientRuntime’ package in the ‘libTools’ project. This package is needed for our fix.
    1. In the ‘Solution Explorer’ window, right-click the ‘libTools’ project and click ‘Manage nuget packet’ menu item.
    2. In the ‘Nuget Package Manager’ window, select ‘Browse’
    3. In the textbox inside ‘Nuget Package Manager’ window, type ‘Microsoft.Rest.ClientRuntime’.
    4. In the left side of ‘Nuget Package Manager’ window, select ‘Microsoft.Rest.ClientRuntime’ package
    5. In the right side of ‘Nuget Package Manager’ window, click ‘Install’ button.
    6. In the ‘Review Changes’ window, click the ‘Ok’ button.
    7. In the ‘License Acceptance’ window, click ‘I Accept’ button.
  2. Implement the AnonymousCredential class. It will sove the anonymous authentication problem.
    1. In the ‘Solution Explorer’ window, right-click ‘libTools’ project and click ‘Add’-> ‘Class’ context menu item.
    2. In the ‘Add new item’ dialog box, type ‘AnonymousCredential.cs’ in ‘Name’ textbox and click the ‘Ok’ button
    3. In the top of the new file, add the following statement:
    4. Use the following code for this class. Yes, nothing is needed but the inheritance.

      public class AnonymousCredential : ServiceClientCredentials

        {

        }

  3. 3) Build the client Windows form to access the API
    1. In the ‘Solution Explorer’ window, below ‘winClient’ project, double-click ‘Form1.cs’ file.
    2. From the ‘Toolbox’ window, add three buttons inside the form.
    3. Change the button properties according to the following:

      Name: cmdAllValues Text: All Values

      Name: cmdValue Text: Single Value

      Name: cmdUpdate Text: Update

  4. In the Windows project, add a reference to the ‘libTools’ project
    1. In the ‘Solution Explorer’ window, right-click ‘winClient’ project, click ‘Add’-> ‘Reference’ context menu item
    2. Inside ‘Reference Manager’ window, on the left side, select ‘Projects’ -> ‘Solution’ item
    3. Inside ‘Reference Manager’ window, on the right side, check the box besides ‘libTools’ and click the ‘Ok’ button
  5. Add the code for the ‘All Values’ button
    1. Select the ‘Form1.cs (design)’ page
    2. Double click the ‘All Values’ button, this will create a click event for the button.
    3. In the top of the ‘Form1.cs’ file (already opened by the previous task), add the following statements:

      using libTools;

        using svcRest;

    4. Change the ‘cmdAllValues_Click’ for the following code:

              private async void cmdAllValues_Click(object sender, EventArgs e)

                {

                    SvcRestClient client =

                        new SvcRestClient(new Uri("http://localhost/webDemo"),

                            new AnonymousCredential());

                    var result = client.Values.Get();

                

                    foreach(var x in result)

                    {

                        MessageBox.Show(x);

                    }

                }

      It’s important to notice the following details:

      • There are both, synchronous and asynchronous methods in the proxy. The code is illustrating the synchronous call.
      • Most methods are extension methods: due to that, we need the ‘Using svcRest’ statement.
      • You don’t need to deal with the protocol details to call the API. That’s the advantage of the proxy. We have this advantage for webservices ever since .NET was created; now we can work in this way also with web APIs.
  6. Add the code for the ‘Single Value’ button
    1. Select the ‘Form1.cs (design)’ page
    2. Double click the ‘Single Value’ button, this will create a click event for the button.
    3. Change the ‘cmdValue_Click’ for the following code:

              private async void cmdValue_Click(object sender, EventArgs e)

                {

                    SvcRestClient client =

                        new SvcRestClient(new Uri("http://localhost/webDemo"),

                          new AnonymousCredential());

                    var result = client.Values.GetByid(1);

                    MessageBox.Show(result);

                }

  7. Add the code for the ‘Update’ button
    1. Select the ‘Form1.cs (design)’ page
    2. Double click the ‘Update’ button, this will create a click event for the button.
    3. Change the ‘cmdUpdate_Click’ for the following code:

              private async void cmdUpdate_Click(object sender, EventArgs e)

                {

                    SvcRestClient client =

                        new SvcRestClient(new Uri("http://localhost/webDemo"),

                          new AnonymousCredential());

                    client.Values.PutByidvalue(1, "New Value");

                        

                    MessageBox.Show("Change Completed!");

                }

  8. Execute and test the application
    1. In the ‘Solution Explorer’ window, right-click the ‘winClient’ project and click ‘Set as Startup Project’
    2. Click ‘Start’ button in the toolbox to run the application
    3. Click the ‘All Values’ button, the ‘Single Value’ button, ‘Update’ button and ‘Single Value’ button again, in sequence and click the ‘Ok’ button when needed, to check the result. The API calls will be working well.

Conclusion

These new features are really game-changing, improving the way that we use web APIs. This is just the beginning, because there are much more about these features that are coming.

You may have noticed some flaws; for example, the client only creates a C# proxy: However, it’s very common nowadays to require a Javascript proxy, particularly for the consumption of web APIs in AngularJS applications. It’s important to remember that the core of this technology is the JSON format that describes the web API. Anyone can build a new Visual Studio Add-In that is capable of reading this JSON description and creating a Javascript proxy. We will, for sure, see improvements in a short while.

Swagger deserves more advanced articles than this, to be sure, but for now I will give you some links for further reading:

www.red-gate.com

Инструментарий Visual Studio - Новые средства NuGet для разработки под Windows 10

Группа NuGet выпустила несколько новых утилит. Мы работали в сотрудничестве с несколькими другими группами в Microsoft, чтобы предоставить вам новую версию клиента NuGet, который поддерживает Universal Windows Platform (UWP) и новые Portable Class Libraries (PCL). Новые утилиты NuGet доступны через Tools | Extensions and Updates | Update in Visual Studio 2015, а также на сайте дистрибуции NuGet (bit.ly/1MgNt2J). NuGet также выпустила новую версию утилиты командной строки NuGet, которую можно скачать с dist.nuget.org. В этой статье будет дан обзор новых возможностей и процесса, которому должны следовать Windows-разработчики, чтобы добавить поддержку NuGet в свои проекты для Windows 10.

Project.Json

Начиная с ASP.NET 5, группа NuGet ввела поддержку файла project.json, который описывает зависимости проекта с четким определением пакетов, от которых вы зависите напрямую. В ASP.NET 5 это единственный файл, определяющий конфигурацию проекта. Однако с появлением NuGet 3.1 вы используете этот файл в проектах для UWP и современных PCL (ориентированных на DNX, UWP и Microsoft .NET Framework 4.6) для определения ссылок вашего пакета. Хорошая новость в том, что диалог Manage Packages в Visual Studio будет соответственно поддерживать ваш файл packages.config или project.json за вас, исходя из типа разрабатываемого проекта.

Этот отход от модели packages.config также позволяет вам «перезапускать» ссылки в своих проектах и использовать новые возможности транзитивных зависимостей (transitive dependency capabilities) в NuGet. Разработчики и авторы пакетов сообщали группе NuGet, что, когда они добавляли пакеты в проекты, их файл packages.config загрязнялся зависимостями от зависимых пакетов.

Например, NHibernate — это пакет, зависимый от пакета Iesi.Collections. В packages.config есть две ссылки: на NHibernate и Iesi.Collections. Когда нужно обновить NHibernate, возникает вопрос: «Должен ли я обновить и Iesi.Collections?». Также существует противоположная проблема. Если появилось обновление для Iesi.Collections, надо ли обновлять NHibernate для поддержки новых средств в Iesi.Collections? В итоге разработчики могли попасть в этот кошмарный цикл управления зависимостями пакета в проекте из-за его ссылок на другие пакеты.

Функция транзитивных зависимостей в NuGet абстрагирует решение об обновлении ссылок пакета с улучшенной поддержкой семантического контроля версий в файле определений пакетов (документах nuspec). Разработчики указывают диапазон версий зависимостей, поддерживаемых их пакетами. Когда NuGet устанавливает клиенты, эти зависимости добавляют жесткую ссылку на конкретную версию в файле packages.config, и такие ссылки выглядят, как и любые другие ссылки на пакеты, добавленные в проект. Отличный пример этой проблемы показан на рис. 1.

Рис. 1. Содержимое файла packages.config в ASP.NET MVC

<?xml version="1.0" encoding="utf-8"?> <packages> <package version="3.4.1.9004" targetFramework="net46" /> <package version="3.0.0" targetFramework="net46" /> <package version="6.1.3" targetFramework="net46" /> <package version="1.10.2" targetFramework="net46" /> <package version="1.11.1" targetFramework="net46" /> <package version="2015.2.624" targetFramework="net46" /> <package version="2.2.1" targetFramework="net46" /> <package version="2.2.1" targetFramework="net46" /> <package version="2.2.1" targetFramework="net46" /> <package version="5.2.3" targetFramework="net46" /> <package version="3.2.3" targetFramework="net46" /> <package version="1.1.3" targetFramework="net46" /> <package version="3.2.3" targetFramework="net46" /> <package version="1.0.0" targetFramework="net46" /> <package version="3.2.3" targetFramework="net46" /> <package version="1.0.0" targetFramework="net46" developmentDependency="true" /> <package version="3.0.1" targetFramework="net46" /> <package version="3.0.1" targetFramework="net46" /> <package version="3.0.1" targetFramework="net46" /> <package version="3.0.1" targetFramework="net46" /> <package version="3.0.1" targetFramework="net46" /> <package version="3.0.1" targetFramework="net46" /> <package version="3.0.1" targetFramework="net46" /> <package version="3.0.1" targetFramework="net46" /> <package version="3.0.1" targetFramework="net46" /> <package version="1.0.0.0" targetFramework="net46" /> <package version="2.6.2" targetFramework="net46" /> <package version="6.0.4" targetFramework="net46" /> <package version="1.0" targetFramework="net46" /> <package version="1.2.0" targetFramework="net46" /> <package version="1.5.2" targetFramework="net46" /> </packages>

Добавляя эти вещи в свой проект, мне на самом деле нужны только Microsoft.AspNet.Mvc, Microsoft.AspNet.Identity.EntityFramework, Newtonsoft.Json и Microsoft.Owin.Security.MicrosoftAccount. Другие элементы, на которые ссылаются эти четыре пакета, являются просто шумом, и теперь у меня имеются жесткие ссылки на конкретные версии. Благодаря функции транзитивных зависимостей версии других пакетов исключаются. Мне остается управлять лишь теми четырьмя библиотеками, реально используемыми в моем проекте.

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

Общий локальный кеш пакетов

Зачастую у разработчиков свои наборы пакетов и инструментов, которыми они предпочитают пользоваться. Зачем многократно скачивать и устанавливать их на одной рабочей станции, когда очевидно, что вы уже используете их в одном проекте и хотите использовать в другом? В случае проектов, управляемых project.json, NuGet скачивает и сохраняет копии пакетов в глобальной папке пакетов, расположенной в вашей папке %userprofile%\.nuget\packages. Это должно сократить размер занимаемого дискового пространства на рабочей станции. Кроме того, это исключает лишние вызовы для выборки тех пакетов с NuGet.org, которые у вас уже имеются.

Поддержка project.json и общего локального кеша пакетов доступна для ASP.NET 5 с NuGet 3.0, а для других типов проектов нужен NuGet версии не ниже 3.1.

Устаревшие средства

Начиная с NuGet 3.1 при условии использования project.json, вы прекращаете поддерживать выполнение скриптов install.ps1/uninstall.ps1 и создание элементов в папке пакетов /content. Установка пакетов с этими элементами не позволит ни выполнить файл install.ps1, ни скопировать контент в ваш проект. Однако в проектах, которые все еще используют файлы packages.config, текущее поведение пока поддерживается. На то есть несколько причин:

  • при восстановлении транзитивных пакетов надежный выбор того, что нужно удалить, а что — установить, невозможен;
  • при копировании контента в проект пользователя, если пакеты обновляются, запускается неявный процесс удаления, который нельзя безопасно выполнять;
  • NuGet должен полностью поддерживать разработку вне Visual Studio. С переходом на полную поддержку кросс-платформенной .NET-разработки следует учитывать, что в других средах Windows Powershell недоступен. Кроме того, все больше разработчиков работают над .NET-кодом вне Visual Studio, и их нужно поддерживать;
  • другие диспетчеры пакетов обеспечивают отличное управление и доставку контента. NuGet хорошо работает как диспетчер пакетов для .NET Framework, поэтому для данной инфраструктуры рекомендуется по-прежнему использовать именно его;
  • больше нет поддержки «любой» инфраструктуры. Вы больше не можете помещать файлы напрямую в корень папок build и lib и включать их в проект. Важно объявить, какие инфраструктуры поддерживают ваши файлы, чтобы NuGet знал приоритет в разрешении соответствующих ссылок;
  • пакеты решения больше не поддерживаются. Эти пакеты не модифицируют какие-либо специфические возможности проекта и обычно служили для доставки общих ресурсов, которые повторно использовались между проектами. С появлением новой папки общих пакетов эти ресурсы уже могут находиться на диске, если они есть в каком-то другом проекте.

Новые целевые инфраструктуры

Другой аспект новой версии NuGet — поддержка новых инфраструктур разработки и улучшенная поддержка «родных» для разных операционных систем и архитектур пакетов. NuGet выходит за рамки одной лишь модели .NET Framework для поддержки большего количества экосистем и позволяет задействовать библиотеки в ранее недоступных средах.

Моникеры целевых инфраструктур (target framework monikers, TFM) — это сокращение (shorthand), применяемое при создании пакетов для объявления поддержки двоичных файлов конкретных инфраструктур и их зависимостей. Вы найдете в папках lib и ref пакета имена папок, где используется эта нотация. Кроме того, есть элементы в элементе зависимостей nuspec пакета, которые объявляют атрибут целевой инфраструктуры с помощью одного из TFM-значений, чтобы указать клиенту NuGet доставить соответствующую библиотеку в проект, где она должна использоваться.

В табл. 1 перечислены по-прежнему доступные TFM и новые TFM.

Табл. 1. Целевые инфраструктуры, поддерживаемые NuGet 3.x

ОписаниеБазовый кодДоступные версии
Приложения управляемых инфраструктур (Windows Forms, Console Applications, Windows Presentation Foundation, ASP.NET)netnet11, net20, net35, net35-client, net35-full, net4, net40, net40-client, net40-full, net403, net45, net451, net452, net46
ASP.NET 5dnxcorednxcore50
Windows Storenetcorewin8 = netcore45, win81 = netcore451, uap10.0
Windows Phone (модель appx)wpawpa81
Windows Phone (Silverlight)wpwp7 = sl3-wp, wp71 = sl4-wp71, sl4-wp, wp8 = wp8-, wp81
Silverlightslsl2, sl3 = sl30, sl4 = sl40, sl5 = sl50
Xamarin  mono, MonoMac, Xamarin.Mac, MonoAndroid10, MonoTouch20, Xamarin.iOS10
Compact Frameworknet-cfnet20-cf, net35-cf = cf35, net40-cf
Micro Frameworknetmfnetmf41, netmf42, netmf43

Элементы, перечисленные со знаком равенства (=), являются синонимами, поддерживаемыми NuGet. Это огромный объем поддержки для множества разных инфраструктур — в ней можно запутаться. Нужно ли вам поддерживать микро-инфраструктуру в своем пакете управляемой инфраструктуры? Насколько глубокая поддержка Silverlight требуется именно вам? Вы должны ответить на эти вопросы, чтобы лучше удовлетворить потребности своих пользователей.

Вы заметите, что в табл. 1 нет явного названия для поддержки PCL. Хотя NuGet поддерживает комбинации инфраструктур, мы хотим, чтобы у вас был более совместимый «снизу вверх» (forward-compatible) моникер для современных PCL. Это даст вам большую гибкость в конструировании пакетов и определении поддерживаемых вами инфраструктур. В NuGet 3.1 введен целевой моникер dotnet (dotnet target moniker) для современных PCL.

Целевой моникер dotnet

В предыдущих версиях NuGet вы могли указывать инфраструктуры с какой-либо PCL, которая работала как набор TFM-аббревиатур, соединенных знаками «плюс». В итоге вы могли получить такие имена папок, как «portable-net45+win8+wpa81+wp8». Это могло создать путаницу и привести к проблемам несовместимости для ваших пользователей. Чтобы упростить кросс-платформенную разработку и создание PCL, NuGet ввела моникер dotnet.

Этот моникер не привязан напрямую к возможностям какой-либо конкретной версии или инфраструктуры. Это непрямую ссылка, которая сообщает NuGet: «Это ссылка, которую следует использовать, если она поддерживает имеющиеся инфраструктуру и возможности исполняющей среды». Тогда клиент NuGet анализирует эту ссылку, чтобы определить, какой функционал и инфраструктуры она поддерживает. Этот процесс продолжается, пока клиент NuGet не разрешит точные возможности, поддерживаемые ссылкой dotnet. Затем он применит ее, только если она соответствует средствам и требованиям вашего проекта. Вы можете ссылаться на моникер dotnet в .NET Framework версий от 4.5 и выше, а также в соответствующих версиях производных инфраструктур, включая Xamarin Android и Xamarin iOS.

Это не означает, что вы можете просто создать PCL, упаковать с объявленными зависимостями dotnet, и на этом все. Если вы хотите иметь возможность поддерживать проекты, использующие более старые версии Visual Studio и клиентов NuGet, созданных с помощью традиционных библиотек портируемых классов, то все равно должны создать и поместить ссылку на полный моникер целевой инфраструктуры PCL.

При установке пакета в проект того типа, который полностью совместим с моникером dotnet (.NET Framework 4.6, UWP или ASP.NET 5), моникер dotnet будет последним в процессе поиска. Это произойдет после попытки найти ссылку, которая совпадает с конкретной или менее специфичной инфраструктурой вашего проекта. Такая иерархия выглядит, как показано на рис. 2.

Рис. 2. Иерархия инфраструктур, проверяемых на ссылки для проекта Universal Windows Platform

Если ваш проект — это современная PCL, использующая project.json, который ориентирован на какую-либо из этих инфраструктур и ни на какую другую, моникер dotnet будет анализироваться первым. Процесс будет следовать стандартной стратегии разрешения PCL, как на рис. 3.

Рис. 3. Иерархия инфраструктур, проверяемых на ссылки в проекте Modern Portable Class Library

dotnetdotnet
PCL containing your targetsPCL, содержащая ваши целевые инфраструктуры
portable-*portable-*

Командная строка NuGet

Теперь доступен подобный команде исполняемый файл для NuGet, nuget.exe, и он поддерживает установку, обновление и восстановление пакетов в проекте либо через файл packages.config, либо через файл project.json. Команда pack по-прежнему работает с файлами nuspec на диске и файлами packages.config. Она не обновлялась для генерации файла nuspec на основе project.json. Чтобы обойти эту проблему, вам придется создавать собственный файл nuspec для любого нового контента пакета, конструируемого с использованием ссылки на пакеты, которые используют project.json. В следующий выпуск будет включено обновление, устраняющее эту проблему.

Данная версия исполняемого файла командной строки также поддерживает конечные точки NuGet.org v3. Эта новая версия канала nuget.org ускоряет взаимодействие и является более надежным сервисом. В быстрой доставке пакетов помогает встроенная поддержка избыточности и включенная сеть доставки контента (content-delivery network, CDN). Скачайте копию обновленного NuGet.exe по ссылке bit.ly/1UV0kcU.

Если вы установили Windows 10 SDK или Windows 10 Tools после обновления расширения NuGet, установщик откатит расширение обратно к версии 3.1. Из-за этого вам потребуется снова обновить его минимум до версии 3.1.1. Версия, показываемая в диалоге Extensions and Updates, — 3.1.60724.766. Консоль Windows PowerShell имеет версию 3.1.1.0.

Заключение

Теперь вам доступны средства, поддерживающие разработку приложений и проектов PCL для Windows 10 UWP. Эти изменения являются первым шагом в более широком применении диспетчера пакетов и .NET Framework. Microsoft продолжает улучшать .NET-разработку и в ближайшее время будет сосредоточена на том, чтобы предоставить диспетчер пакетов, пригодный для всех .NET-разработчиков проектов любых типов на любой платформе.

msdn.microsoft.com

Installing NuGet client tools | Microsoft Docs

There are two primary tools available to help you build, publish and consume NuGet packages:

  1. The NuGet CLI is the command-line utility for Windows that provides all NuGet capabilities; it can also be run on Mac OSX and Linux using Mono, or through the .NET Core CLI (dotnet).
  2. The NuGet Package Manager in Visual Studio (Windows only) is a GUI tool for managing packages and includes a PowerShell console through which you can use certain NuGet commands directly within Visual Studio. The Package Manager UI and Console are both included with Visual Studio (on Windows) 2012 and later and can be installed manually for earlier versions.

    With Visual Studio for Mac, NuGet capabilities are built in directly. See Including a NuGet package in your project for a walkthrough.

The NuGet CLI and Package Manager both support the following operations:

  • Search packages
  • Install packages
  • Update packages
  • Uninstall packages
  • Restore packages (UI only in the Package Manager)
  • Manage NuGet sources

The following capabilities are supported only in the NuGet CLI:

  • Manage packages (nuget.org or private feed)
  • Create packages
  • Publish packages
  • Manage Nuget.Config
  • Manage the NuGet cache
  • Replicating a package

Note

Another good tool is the NuGet Package Explorer, an open-source, stand-alone tool to visually explore, create, and edit NuGet packages. It's very helpful, for example, to make experimental changes to a package structure without having to rebuild the package each time. The cross-platform .NET Core CLI toolchain, used for developing .NET Core applications, supports several NuGet commands, such as delete, locals, push, pack, and restore.

NuGet CLI

The NuGet command-line interface provides access to all NuGet capabilities, and can be run on Windows, Mac OSX, and Linux as described in the following sections.

Windows

Direct download:

  1. On Mac and Linux, install Mono 4.4.2 or later.
  2. Visit nuget.org/downloads and select the version of NuGet you want.
  3. Each download is the nuget.exe file directly. Instruct your browser to save the file to a folder of your choice. The file is not an installer; running it from the browser won't show anything.
  4. Add the folder where you placed nuget.exe to your PATH environment variable to use the CLI tool from anywhere.

Note

With NuGet 1.4+, you can use nuget update -self to update your existing nuget.exe to the latest version.

Other methods:

  • Chocolatey: Install the NuGet.CommandLine Chocolatey package using the Chocolatey client.

    choco install nuget.commandline
  • Visual Studio: Install the NuGet.CommandLine package from the Package Manager Console in Visual Studio.

    Note

    For NuGet 2.x users: Because of breaking changes introduced in NuGet 3.2, https://nuget.org/nuget.exe points to the latest stable NuGet 2.x release to prevent continuous integration systems from potentially breaking.

Mac OSX and Linux

On Mac OSX and Linux, there are two ways to run the NuGet CLI:

  • Install the .NET Core SDK, which includes the core NuGet capabilities. Downloads are also listed on github.com/dotnet/cli. If you need fuller capabilities, then use the second option below to use nuget.exe with Mono.

  • Install Mono and then use the nuget.exe command-line executable for Windows (version 3.2 and later) from nuget.org/downloads. Running NuGet on Mono is subject to the following limitations:

Related topics

NuGet Package Manager in Visual Studio

The NuGet Package Manager is included in every edition of Visual Studio on Windows, 2012 and later. It includes the Package Manager UI (reference), and the Package Manager Console through which you can access tools that come with certain packages (reference).

The Visual Studio 2017 installer includes the NuGet Package Manager with any workload that employs .NET. To install separately, or to verify that the Package Manager is installed, run the Visual Studio 2017 installer and check the option under Individual Components > Code tools > NuGet package manager.

Note

The console requires PowerShell 2.0, which will already be installed on Windows 7 or higher and Windows Server 2008 R2 or higher.

Package Manager Console commands also work only within Visual Studio on Windows. Use the NuGet CLI outside of that environment, including with Visual Studio for Mac.

Package Manager installation for Visual Studio 2010 and earlier

These steps are not necessary for Visual Studio 2012 and later, which already include the Package Manager.

  1. In Visual Studio 2010 and earlier, click Tools > Extension and Updates.
  2. Navigate to Online, then search for "NuGet Package Manager for Visual Studio" and click Download.
  3. In the Installer dialog box, click Install.
  4. When installation is complete, restart Visual Studio.

Tip

If you're unable to use the Extensions and Updates dialog in Visual Studio (for example, its blocked by a proxy), you can download extensions for Visual Studio 2013 and 2015 directly at https://dist.nuget.org/index.html.

Updating the Package Manager

For Visual Studio 2015 Update 2 and later, the Package Manager is automatically updated to the latest stable release.

For Visual Studio 2015 Update 1 and earlier, select the Tools > Extensions and Updates command and click on the Updates tab to see if a new version of the Package Manager is available.

NuGet previews

If you'd like to preview upcoming NuGet features, install the Visual Studio 2017 Preview, which works side-by-side with stable releases of Visual Studio.

Note that the previous NuGet Beta Channel (https://dotnet.myget.org/F/nuget-beta/vsix/) for Visual Studio 2015 is no longer used.

To report problems with any release of NuGet or to share ideas, open an issue on the NuGet GitHub repository.

Related topics

docs.microsoft.com

NuGet использование

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

Итак, NuGet – это менеджер для управления зависимостями от сторонних библиотек. С помощью этого инструмента можно устанавливать, обновлять и убирать зависимости для вашего проекта с большой легкостью. Применимо как для desktop программ, так и для web. В частности при разворачивании CMS Orchard, она половину сборок тащит при установке самостоятельно из библиотеки пакетов. Есть примеры использования NuGet для Silverlight.

Реплики с галерки

При изучении материалов по NuGet, основым плюсом выступает доступность общих библиотек для ваших проектов. Условные противники NuGet, или же принципиальная оппозиция спрашивает, зачем нужен NuGet для своих общих библиотек, если можно существует external для SVN и другие подобные штуки для систем контроля версий? Т.е. можно сослаться на стабильную ветку исходников.

Разработчики NuGet отвечают, что

  • не надо контроллировать доступ к системе контроля версий,
  • исходный код не показывается другим группам,
  • не надо следить и переключаться на другие ревизии вручную (может вы захотели соскочить с ветки Release, на более ранюю, или вы ссылаетесь на ревизию в trunk)

Неплохие плюсы. Тем более что теперь ваша любимая библиотека не затеряется среди репозиториев и проектов.

Установка

Получить менеджер пакетов NuGet можно либо установив себе ASP.NET MVC 3.0, либо скачав его с сайта nuget.codeplex.com. После этого в Visual Studio появится новый пункт меню для просмотра и загрузки пакетов NuGet.

Tools > Library Package Manager > Add Library Package Reference…

Использование

Менеджер пакетов NuGet выглядит достаточно привычно, если вы пользовались менеджером дополнений для самой студии.

Все точно так же. Список доступных пакетов, краткое описание при выделении пакета. На аккордеонной вкладке Online список всех доступных мест, где могут находится пакеты NuGet. Сейчас там только один официальный ресурс, но вы с легкостью можете добавить локальные директории, сетевые директории, свои собственные сетевые хранилища пакетов NuGet.

Установка и обновление пакетов, до безобразия простое – надо просто нажать на кнопку Install\Update при выделении пакета из списка.

Немного стоит сказать про поиск пакетов. У меня в студии поиск переодически пропадает и я пользуюсь поиском на официальном сайте nuget.org. На данный момент там содержится 958 пакетов. Про поиск и установку с помощью консоли расскажу чуть ниже.

Все действия можно осуществлять из консоли менеджера пакетов, которая появляется при установке NuGet в студию.

Действия в консоли осуществляются для определенного проекта, который выбран в качестве DefaultProject. На скриншоте выбран WindowsFormsApplication1, и все пакеты которые я укажу в консоли будут установлены для этого проекта, если проект не указан специально.

Поиск

Выводит полный список доступных пактов в консоли не очень удобно, так что лучше найти его заранее на сайте. Например добавим в проект StructureMap. Переходим на официальный сайт и ищем по имени. В результате поиска вы скорее всего попадете на страницу следующего вида:

Установка пакетов

Здесь уже указана команда, которую надо выполнить для установки пакета. Копируем текст и вставляем в консоль.

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

В консоли видно, какие пакеты установились и насколько успешно. После того как все установилось, вы увидите, что среди файлов проекта появился новый элемент packages.config. В этом файле указано, какие пакеты были установлены и какой версии. Общий вид файла таков:

<?xml version="1.0" encoding="utf-8"?> <packages> <package version="2.6.2" /> </packages>

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

При этом пакет не будет заново скачан из удаленного ресурса, NuGet достаточно умен и знает, что уже было скачано в рамках текущего программного решения (solution), поэтому он просто добавит ссылку на библиотеку. В консоли вы увидете следующее:

PM> Install-Package structuremap 'structuremap 2.6.2' already installed. Successfully added 'structuremap 2.6.2' to TestProject1.

К сожалению, пока что нельзя указать при добавлении пакета несколько проектов для интеграции. Общий синтаксис установки выглядит следующим образом:

Install-Package [-Id] [-IgnoreDependencies] [-ProjectName ] [-Version ] [-Source ] []

Пакеты скачиваются в корневую директорию программного решения в папку packages, так что не забудьте добавить ее в свою систему контроля версий.

Установленные пакеты можно просмотреть как из менеджера пакетов,

Так и из консоли. Операции по обновлению и удалению так же можно совершать двумя способами. Для менеджера пакетов все кристально ясно, с консолью все чуток сложнее, но и гибче.

Консоль

Основные команды для работы с консолью:

Package – эта команда перечисляет все пакеты установленные для выбранного «по умолчанию» проекта.

PM> package

Id                             Version              Description--                             -------              -----------structuremap                   2.6.2                StructureMap is a Dependency Injection / Inversion of Control tool for .Net that can be used to improve the architectural qualities of an object ori... 

UpdatePackage – с помощью этой команды осуществляется обновление установленых пакетов. Для обновления зависимостей в проекте «по умолчанию» необходимо написать

PM> Update-Package -Id structuremap

Если у вас последняя версия, то NuGet так и скажет:

PM> Update-Package -Id structuremap No updates available for 'structuremap'.

Полный синтаксис выглядит так:

Update-Package [-Id] [-IgnoreDependencies] [-ProjectName ] [-Version ] [-Source ] []

К сожалению нельзя проверить на обновления все пакеты разом и обновить их. Надо операцию обновления проводить для каждого пакета NuGet. Мировое сообщество и закулиса надеятся, что данная возможность появится в одном из ближайших релизов. А пока что, знающие люди написали вот такой скрипт на PowerShell

ForEach ($project in get-project -all) { get-package | update-package -Project $project.Name }

Результат выполнения:

PM> ForEach ($project in get-project -all) >> { >> get-package | update-package -Project $project.Name >> } No updates available for 'structuremap'. No updates available for 'structuremap'. PM>

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

Uninstall-package – удаление пакета, как не сложно догадаться =)

Результат выполнения:

PM> Uninstall-Package -Id structuremap Successfully removed 'structuremap 2.6.2' from TestProject1.

Общий синтаксис команды:

Uninstall-Package [-Id] [-RemoveDependencies] [-Force] [-Version ] []

Get-help – самая важная команда при работе!

Например:

PM> Package get-help PM> Package -?

Интересные пакеты

Покопавшись в интернете и посмотрев на примеры, можно сказать что есть следующие интересные пакеты:

  • nUnit – фреймворк для тестирования
  • log4net – богатая библиотека для логирование
  • structureMap – IoC контейнер
  • SqlServerCompact - 4я версия SQL CE
  • mvcMailer – удобная библиотека для работы с почтой
  • jQuery – просто семейство всяких полезностей при работе из VS2010
  • moq – легковесная библиотека для мокирования объектов

Скорее всего ваша любимая библиотека из мира OpenSource тоже есть в библиотеке NuGet!

В следующий раз расскажу как можно самому создавать NuGet пакеты и размещать их в библиотеках.

Hard’n’heavy!

www.rootfront.com

Reinstalling and Updating NuGet Packages

There are a number of situations, described below under When to Reinstall a Package, where references to a package might get broken within a Visual Studio project. In these cases, uninstalling and then reinstalling the same version of the package will restore those references to working order. Updating a package simply means installing an updated version, which often restores a package to working order.

Updating and reinstalling packages is accomplished as follows:

Method Update Reinstall
Package Manager console (described in Using Update-Package) Update-Package command Update-Package -reinstall command
Package Manager UI On the Updates tab, select one or more packages and select Update On the Installed tab, select a package, record its name, then select Uninstall. Switch to the Browse tab, search for the package name, select it, then select Install).
nuget.exe CLI nuget update command For all packages, delete the package folder, then run nuget install. For a single package, delete the package folder and use nuget install <id> to reinstall the same one.

In this topic:

When to Reinstall a Package

  1. Broken references after package restore: If you've opened a project and restored NuGet packages, but still see broken references, try reinstalling each of those packages.
  2. Project is broken due to deleted files: NuGet does not prevent you from removing items added from packages, so it's easy to inadvertently modify contents installed from a package and break your project. To restore the project, reinstall the affected packages.
  3. Package update broke the project: If an update to a package breaks a project, the failure is generally caused by a dependency package which may have also been. To restore the state of the dependency, reinstall that specific package.
  4. Project retargeting or upgrade: This can be useful when a project has been retargeted or upgraded and if the package requires reinstallation due to the change in target framework. NuGet 2.7 and later shows a build error in such cases immediately after project retargeting, and subsequent build warnings let you know that the package may need to be reinstalled. For project upgrade, NuGet shows an error in the Project Upgrade Log.
  5. Reinstalling a package during its development: Package authors often need to reinstall the same version of package they're developing to test the behavior. The Install-Package command does not provide an option to force a reinstall, so use Update-Package -reinstall instead.

Constraining upgrade versions

By default, reinstalling or updating a package always installs the latest version available from the package source.

In projects using the packages.config reference format, however, you can specifically constrain the version range. For example, if you know that your application works only with version 1.x of a package but not 2.0 and above, perhaps due to a major change in the package API, then you'd want to constrain upgrades to 1.x versions. This prevents accidental updates that would break the application.

To set a constraint, open packages.config in a text editor, locate the dependency in question, and add the allowedVersions attribute with a version range. For example, to constrain updates to version 1.x, set allowedVersions to [1,2):

<?xml version="1.0" encoding="utf-8"?> <packages> <package version="1.1.0" allowedVersions="[1,2)" /> <!-- ... --> </packages>

In all cases, use the notation described in Package versioning.

Using Update-Package

Being mindful of the Considerations described below, you can easily reinstall any package using the Update-Package command in the Visual Studio Package Manager Console (Tools > NuGet Package Manager > Package Manager Console):

Update-Package -Id <package_name> –reinstall

Using this command is much easier than removing a package and then trying to locate the same package in the NuGet gallery with the same version. Note that the -Id switch is optional.

The same command without -reinstall updates a package to a newer version, if applicable:

Update-Package <package_name>

By default, Update-Package affects all packages in a solution. To limit the action to a specific project, use the -ProjectName switch, using the name of the project as it appears in Solution Explorer:

# Reinstall the package in just MyProject Update-Package <package_name> -ProjectName MyProject -reinstall

To update all packages in a project (or reinstall using -reinstall), use -ProjectName without specifying any particular package:

Update-Package -ProjectName MyProject

To update all packages in a solution, just use Update-Package by itself with no other arguments or switches. Use this form carefully, because it can take considerable time to perform all the updates:

# Updates all packages in all projects in the solution Update-Package

Updating packages in a project or solution using project.json or package references in project files always updates to the latest version of the package (excluding pre-release packages). Projects that use packages.config can, if desired, limit update versions as described below in Constraining upgrade versions.

For full details on the command, see the Update-Package reference.

Considerations

The following may be affected when reinstalling a package:

  1. Reinstalling packages according to project target framework retargeting

    • In a simple case, just reinstalling a package using Update-Package –reinstall <package_name> works. A package that is installed against an old target framework gets uninstalled and the same package gets installed against the current target framework of the project.
    • In some cases, there may be a package that does not support the new target framework.
      • If a package supports portable class libraries (PCLs) and the project is retargeted to a combination of platforms no longer supported by the package, references to the package will be missing after reinstalling.
      • This can surface for packages you're using directly or for packages installed as dependencies. It's possible for the package you're using directly to support the new target framework while its dependency does not.
      • If reinstalling packages after retargeting your application results in build or runtime errors, you may need to revert your target framework or search for alternative packages that properly support your new target framework.
  2. requireReinstallation attribute added in packages.config after project retargeting or upgrade

    • If NuGet detects that packages were affected by retargeting or upgrading a project, it adds a requireReinstallation="true" attribute in packages.config to all affected package references. Because of this, each subsequent build in Visual Studio raises build warnings for those packages so you can remember to reinstall them.
  3. Reinstalling packages with dependencies

    • Update-Package –reinstall reinstalls the same version of the original package, but installs the latest version of dependencies unless specific version constraints are provided. This allows you to update only the dependencies as required to fix an issue. However, if this rolls a dependency back to an earlier version, you can use Update-Package <dependency_name> to reinstall that one dependency without affecting the dependent package.
    • Update-Package –reinstall <packageName> -ignoreDependencies reinstalls the same version of the original package but does not reinstall dependencies. Use this when updating package dependencies might result in a broken state
  4. Reinstalling packages when dependent versions are involved

    • As explained above, reinstalling a package does not change versions of any other installed packages that depend on it. It's possible, then, that reinstalling a dependency could break the dependent package.

docs.microsoft.com

Visual Studio 2017 Extension Sim-Ship Partners

The power of Visual Studio is increased by the thousands of extensions that allow you to customize or enhance your development experience and increase your productivity. With each new release of Visual Studio, we invite partners to migrate their extensions so that they can take advantage of the latest features in Visual Studio. Below, and on the Visual Studio Marketplace, you'll find a list of more than 250 extensions that are ready for you to install with Visual Studio 2017 today. As additional extensions are migrated to Visual Studio 2017, you can find them on the Visual Studio Marketplace.

Extensions providers that are marked with "Basic Partner", "Alliance Partner", or "Premier Partner" are ones who participate in the Visual Studio Partner Program. If you author an extension, we encourage you to join the Partner Program.

Extension Created By Description Actipro WPF Essentials - WPF Control Bundle Actipro Software (Alliance Partner) UI controls and components for WPF: Docking/MDI, Editors, Navigation, Ribbon, Wizard, and the Shared Library... all at incredible savings. Actipro WPF Studio - WPF Control Suite Actipro Software (Alliance Partner) More than 100 WPF controls and components, including docking windows/MDI, Office ribbons, editors, propertygrids, gauges, charts, calendars & more. ActiveReports GrapeCity (Premier Partner) .NET reporting tool for HTML5, WPF, Windows Forms, and ASP.NET provides developers with a familiar Visual Studio integrated designer, components, and extensive API. Optional scalable report server offers load balancing, multi-tenancy, scheduling, and batch printing. Add-in Express for Microsoft Office and .NET Add-in Express (Alliance Partner) All-in-one framework to develop world-class application-level extensions such as COM add-ins, RTD servers, XLL add-ins and UDFs for all applications and all versions of the Microsoft Office suite. ADO.NET Data Providers CDATA Software (Premier Partner) Comprehensive access to application, database, and Web API data through familiar and easy-to-use tools. Use driver technologies for easy, fast, and secure access to your data. Build apps that connect to Google, QuickBooks, Salesforce.com, and more using standard VS wizards. Advanced Installer Caphyon (Premier Partner) Authoring MSI, AppX and AppV packages and for repackaging by a wide users range, from beginners to senior developers and system administrators. AIT WordToTFS AIT GmbH (Basic Partner) Microsoft Word plug-in that enables business analysts to seamlessly integrate Microsoft Word with Visual Studio Team Foundation Server. AnkhSVN CollabNet (Alliance Partner) Open Source SCC integration for Microsoft Visual Studio providing full Subversion support for Visual Studio. AnyStatus AnyStatus (Basic Partner) Monitor processes and services on the back end of your development workflow. Includes integration services like AppVeyor, Jenkins, TeamCity, or TFS, remote and local Windows services, HTTP status, TCP ports, Performance Counters, CPU Usage, Code Coverage and more. ApexSQL Complete ApexSQL (Basic Partner) Automatically fill in SQL keywords, statements and identifiers. It helps with object script and description reviews without coding interruption and also speeds up SQL coding with snippets. ApexSQL Refactor ApexSQL (Basic Partner) SQL formatter and database refactoring tool for SQL Server. Format SQL queries, refactor SQL code and database tables with ease. ApexSQL Search ApexSQL (Basic Partner) Analyzes SQL Server database object's dependencies within the database, across databases, scripts, and even applications. It recognizes all database dependencies. Aqua Aqua Security (Premier Partner) Automates container image build vulnerability scanning. It can be embedded as a step in the CI process to provide vulnerability scanning for an image. Arduino IDE for Visual Studio Visual Micro (Basic Partner) A free Arduino IDE compatible development tool for individuals and teams. Provides support for an unlimited number of different micro-controller and IoT devices such as:- Esp8266, Arduino Uno, Launchpad etc. Also includes hardware and library download managers. examples and documentation explorer, shared library projects, view hidden Arduino source code. An optional Pro version can also be purchased for a small free. Pro includes many extra features such as better support for Team Development, debugger options such as Serial, UDP, OCD, GDB etc,, faster builds and serial logging. Atalasoft DotImage Activation Wizard Atalasoft(Alliance Partner) Atalasoft DotImage Activation Wizard guides you through the process of activating a serial number or evaluation license for your Atalasoft DotImage toolkit. Atomineer Pro Documentation Jason Williams (Basic Partner) Source-code documentation-comment creation and maintenance, and other documentation-related tools. BISM Normalizer BISM Normalizer (Basic Partner) BISM Normalizer manages Microsoft Analysis Services tabular models. Black Duck Hub Black Duck Software (Premier Partner) Allows organizations to automatically find and fix open source security vulnerabilities during the build process. It also creates a task that allows you to receive alerts and fail the build when any Black Duck Hub Policy Violations are met. Bridge.NET Bridge.NET (Basic Partner) Open source C#-to-JavaScript compiler. Write your code in C#, then compile to JavaScript. Run your App on billions of devices using JavaScript. Code Alignment Chris McGrath Code alignment helps you present your code beautifully, enhancing clarity and readability. Code Compare Devart (Alliance Partner) File and folder comparison and merging, Code Compare takes into account specifics of programming languages (C#, Visual Basic, XML, XAML, etc.), supports two- and three- way comparison and merge. CodeContracs R# Interop tom-englert.de A code fix provider that automates adding corresponding R# attributes for CodeContract annotations. CodeRush for Roslyn Developer Express (Premier Partner) Powerful code creation, debugging, navigation, refactoring, analysis and visualization tools that exploit the new Roslyn engine. combit List & Label combit (Premier Partner) List & Label is one of the most extensive report generators. Top: Fast performance and scalability with royalty free report designer that can be switched to many other languages with language kits. Commit Formatter Kristian Adrup (Basic Partner) Extends team explorer and adds automatic hard word wrap to the Git commit message textbox according to the 50/72 style. Component Diagnostics Paul Harrington Provides real-time diagnostics output of various sub-systems within Visual Studio. ComponentOne Studio GrapeCity (Premier Partner) Delivers rich, responsive desktop and Web applications on time and under budget. Controls range from UI to complex data visualization and platforms include WinForms, UWP, WPF, MVC Core & ActiveX. ComponentOne Studio - ASP.NET Web Forms Edition GrapeCity (Premier Partner) Deliver modern solutions with ComponentOne Studio Web Forms controls. Provide powerful data management with extensible, touch-first controls designed for Visual Studio. ComponentOne Studio - MVC Edition GrapeCity (Premier Partner) Build modern, touch-first solutions without compromise. With ComponentOne Studio ASP.NET MVC Edition, you'll get fast, lightweight controls with professional designs to support any user requirement on the latest mobile devices and browsers. ComponentOne Studio - UWP Edition GrapeCity (Premier Partner) Catapult your applications to new heights with our stunning visualization, powerful reports, and complete schedulers available on any Windows 10 device. Desktop, tablet, phone, and wearables become one—and you only have to code once. ComponentOne Studio - WinForms Edition GrapeCity (Premier Partner) Harness the power of desktop applications with ComponentOne Studio WinForms Edition. Deliver top-of-the-line, modern solutions built on our foundation of grids, reporting, charts, and input controls. Design with power, right out of the box. ComponentOne Studio - WPF Edition GrapeCity (Premier Partner) Embrace elegance and innovation with ComponentOne Studio WPF Edition, your complete toolset for desktop development. Lightning-fast grids, stunning 3D charts, and touch optimization will give your applications the edge they need in today's market. ComponentOne Studio GrapeCity, inc. (Premier Partner) ComponentOne Studio combines all of our most popular platform Studios so you can deliver rich, responsive desktop and Web applications on time and under budget. Controls range from UI to complex data visualization and platforms include WinForms, UWP, WPF, MVC Core & ActiveX. Conveyor Keyoti (Basic Partner) Easily test web applications from external tablets and phones on your network. CVSNT Client Suite March Hare Software (Alliance Partner) Use CVS Suite to track changes to Visual Studio projects using CVS Suite Source Code Control Provider for Visual Studio. dbForge Fusion for MySQL Devart (Alliance Partner) MySQL database development and enhance data management capabilities. Database development and administration tasks become available from your IDE. dbForge Fusion for Oracle Devart (Alliance Partner) Oracle database development and enhance data management capabilities. Database development and administration tasks become available from your IDE. dbForge Fusion for SQL Server Devart (Alliance Partner) SQL database development and enhance data management capabilities. Database development and administration tasks become available from your IDE. dbForge SQL Complete Devart (Alliance Partner) Speeds up SQL code writing, offers context-based smart suggestions, performs automatic formatting, refactoring and a lot of other things that save time and effort in the database development process. Deleaker Softanics (Basic Partner) For C++ developers to find and locate memory leaks, GDI leaks, handle leaks and other kinds of leaks. DevCraft Telerik (Premier Partner) With UI libraries for HTML5 and every .NET platform, tools that speed up development and intuitive API, Telerik DevCraft™ by Progress is the most complete toolbox for building modern and future-proof business applications. DevExpress Universal Subscription Developer Express (Premier Partner) The DevExpress Universal Subscription was built with the advanced developer in mind. Filled with user interface components, frameworks and toolsets targeting all major Microsoft platforms, it will give developers that boost for creating the next big application. Document Converter for DOCX/DOC/PDF/Images Gnostice Information Technologies (Alliance Partner) Convert DOCX and DOC files to PDF and image formats with ease. It can also reconstruct page elements when converting from PDF to DOCX. dotConnect Devart (Alliance Partner) ADO.NET data providers for a wide range of major databases and cloud apps with advanced data source-specific features. Dotfuscator PreEmptive Solutions (Premier Partner) Provides smart application protection to over 5,000 commercial corporate clients in over 100+ countries helping organizations protect trade secrets (IP), reduce piracy & counterfeiting, and ward off tampering & data breaches. DotImage Imaging SDK for ASP.NET and WinForms Atalasoft (Alliance Partner) DotImage is a full featured and easy to use photo and document imaging toolkit for .NET that brings advanced imaging to your desktop or web applications. DotNetBar DevComponents (Basic Partner) Suite of WinForms and WPF controls to create professional looking applications with ease. DotVVM for Visual Studio RIGANTI (Basic Partner) Build web applications using the MVVM pattern. Add the IntelliSense features for DotVVM markup files, includes the DotVVM project templates for OWIN and .NET Core, and adds many other useful features to make you really productive. Dynamics CRM Deploy Giancarlo Lelli (Basic Partner) Use this product to deploy directly from Visual Studio any frontend customization for Microsoft Dynamics CRM. Dynatrace AppMon Integration Dynatrace (Premier Partner) Integrate Dynatrace AppMon with Visual Studio. Automatically look up your source code from the Dynatrace AppMon client in Visual Studio with CodeLink. Launch your .NET applications with an injected Dynatrace .NET agent. Run your unit tests with the Dynatrace .NET agent. Easy Git Integration Tools Jon Zoss (Basic Partner) Integrates Git with Visual Studio solution explorer and the status bar. Editor Guidelines Paul Harrington Adds vertical column guides to the Visual Studio text editor. Elements RemObjects Software (Basic Partner) Use C#, Swift, Oxygene Java to create applications for .NET, Cocoa, Java/Android and native Windows/Linux. Elmah.io elmah.io (Basic Partner) Browse your elmah.io logs from within Visual Studio. Entity Developer Devart (Alliance Partner) ORM designer for ADO.NET Entity Framework, NHibernate, LinqConnect, Telerik Data Access, and LINQ to SQL. Use Model-First and Database-First approaches to design your ORM model and generate C# or Visual Basic .NET code for it. ErrorUnit John Gold (Basic Partner) A tool to capture errors and automatically create Unit tests emulating the current state of the program (including data accessed via EF so far), and the parameters called at each IoC layer. Essential Studio Enterprise Edition Syncfusion (Alliance Partner) Supports cross-platform development through web, desktop, and mobile platforms with over 800 unique controls and frameworks. It includes Syncfusion’s enterprise solutions for dashboards and reporting as well as its award-winning Big Data Platform. Eyeshot devDept Software (Basic Partner) Eyeshot is a CAD control based on the .NET Framework. It allows developers to easily add CAD functionalities to WinForms and WPF applications. Eyeshot provides tools for building geometry from scratch, analyzing it with finite element methods, and generating toolpaths on it. Geometry can also be imported or exported using CAD exchange file formats. Funnel Dimitri Dering (Basic Partner) Master large and mid-size Visual Studio solutions. Decrease solution loading and re-compilation times dramatically by filtering projects not relevant for the current task. GhostDoc SubMain (Basic Partner) Author XML documentation and maintaining documentation quality, produce the end user help documentation in multiple formats. GitHub Extension for Visual Studio GitHub Connect and work with your repositories on GitHub and GitHub Enterprise from within Visual Studio 2015 or newer. Clone existing repositories or create new ones and start collaborating! Glyphfriend Rion Williams Glyphfriend is an extension that adds Intellisense support to display preview glyphs for many of the common glyph-based font libraries like Font Awesome, Glyphicons, Ionic, and more. Gnostice XtremeDocumentStudio .NET Gnostice (Alliance Partner) Gnostice XtremeDocumentStudio .NET enables you to embed PDF, DOCX, DOC, XLSX, XLS, ODS, TXT, and image viewing, printing, conversion, creation, and other document operations in your .NET applications. Help File Builder and Tools EWSoftware (Basic Partner) Visual Studio integration for the Sandcastle Help File Builder HLSL Tools for Visual Studio Tim Jones (Basic Partner) Brings full IntelliSense to High Level Shading Language (HLSL) files. IncrediBuild Incredibuild (Premier Partner) Dramatically reduces build, compilation and development times by up to 90%. IncrediBuild’s non-intrusive parallel computing tech empowers users to easily save hundreds of hours just minutes after installing it. Infragistics Ultimate / Infragistics Templates Gallery Infragistics (Premier Partner) Great Apps Happen By Design - Superior user experiences start with Infragistics Ultimate. Design before you build with Indigo Studio, share and collaborate on designs with indigodesigned.com, and build high performance, enterprise-ready desktop & Web line of business apps and mobile apps in your platform of choice - WPF, Windows Forms, ASP.NET, HTML5 & JavaScript, iOS, Android or Xamarin. Infragistics Xamarin Infragistics (Premier Partner) Combining lightning-fast controls with a first-of-its-kind RAD WYSIWYG design-time experience, Infragistics Xamarin includes flexible iOS, Android, and Xamarin.Forms controls designed for the most demanding apps, outperforming all other Xamarin controls on the market. InstallAware InstallAware (Basic Partner) InstallAware integrates directly with Visual Studio, giving you one-click build buttons on the toolbar for your active Visual Studio project. Build MSI Windows Installer, APPX Universal Windows Platform, and App-V Virtualization packages in a single click! InstallSheild Flexera Software (Alliance Partner) Builds MSI and EXE Installers and UWP and WSA Packages for Windows Applications IntervalZero RTX64 IntervalZero (Alliance Partner) An extension for integrating RTX64 SDK features into Visual Studio. This package includes wizards, templates, and debugging support for RTX64 real-time processes. IP*Works! /n Software (Premier Partner) Enables rapid integration of any Internet technology including - FTP, HTTP, SMTP, POP, IMAP, SNMP, LDAP, DNS, RSS, SMPP/SMS, XMPP/Jabber, SOAP, WebDav, etc. JNBridgePro JNBridge (Premier Partner) Get your Java-based and .NET-based (C#, VB) components working together quickly and easily, with JNBridgePro. LEADTOOLS LEAD Technologies (Alliance Partner) Dev toolkit to integrate raster, document, medical, multimedia, and vector imaging into their desktop, server, tablet, and mobile applications. LightningChart Ultimate Arction (Alliance Partner) Fast 2D and 3D measurement, engineering, research, financing and trading data visualization SDK for both WPF and WinForms. LINQ Insight Devart (Alliance Partner) Execute LINQ queries at design time directly from Visual Studio without starting a debug session and provides a powerful ORM profiler for Entity Framework, NHibernate, LINQ to SQL, and LinqConnect. LinqConnect Devart (Alliance Partner) LINQ to SQL compatible ORM solution, supporting SQL Server, Oracle, MySQL, PostgreSQL, and SQLite. It allows you to use efficient and powerful data access for your .NET Framework, Metro, Silverlight, or Windows Phone applications supporting Code-First, Model-First, Database-First or mixed approaches. Liquid Studio Liquid Technologies (Basic Partner) Develop your XML and XSD applications within the familiar Microsoft Visual Studio environment. List & Label 22 combit Software (Premier Partner) Extend apps with powerful reporting functions and have access to every kind of data processing and data exchange in classic applications as well as in web reporting or in the cloud. Lucent Sky AVM Lucent Sky (Basic Partner) Access Lucent Sky AVM within Visual Studio, including scanning applications, reviewing identified vulnerabilities, and applying Instant Fixes to automatically remediate vulnerabilities. MacinCloud VSTS Build Agent Moboware (Basic Partner) Build, test, and publish iOS, watchOS, and tvOS projects on genuine Apple Mac Hardware in the Cloud. Enterprise users can utilize MacinCloud VSTS Build Agent to accomplish Continuous Integration and Continuous Delivery. Mads Kristensen's Productivity Extensions Mads Kristensen This list of more than 50 productivity tools for .NET and web developers includes Bundler & Minifier, Image Optimizer, JavaScript Snippet Pack, Open Command Line, Package Installer, Web Compiler, and many more. Magical C# Debugging - OzCode CodeValue (Alliance Partner) Supercharges the C# debugging experience by cutting debugging time in half. Provides instant visual feedback on changes and allows rapid bug fixing. Mobilize Modernization Tools Mobilize.Net (Premier Partner) Modernization tools to migrate legacy VB6 applications to .NET, migrate legacy desktop apps (.NET, PowerBuilder, Silverlight) to the web and Azure, and migrates Silverlight Phone Apps to Windows 10. Mobilize.Net Silverlight Bridge Mobilize.Net (Premier Partner) Silverlight bridge migrates WinPhone apps to UWP. The tool parses and analyzes the app source code and converts references to Win 10 APIs or HTML5/JavaScript. You get native C# code with no runtimes. Mobilize.Net Visual Basic Upgrade Companion Mobilize.Net (Premier Partner) VBUC migrates VB6 code to .NET and generates 100% native C# or VB.NET code without third party runtimes or dependencies. Save 80% of the time and cost of a rewrite and reduce the overall defect rate. Mobilize.Net WebMAP Mobilize.Net (Premier Partner) WebMAP preserves your investment in existing Windows applications and transforms them to web and mobile versions – without costly runtimes. You get new source code – without introducing defects in existing business logic – using modern languages, components, and patterns. Modern Requirements Suite4TFS eDev Technologies (Premier Partner) Provides a complete set of requirements lifecycle management and audit capabilities; supporting structured, agile/scrum methodologies at scale, and hybrid methodologies. It has two user interfaces, inteGREAT4TFS and SmartOffice4TFS that use Microsoft Team Foundation Server or VSTS natively. MyGet Credential Provider MyGet (Alliance Partner) Easy way to connect to secured NuGet package sources hosted on MyGet. MZ-Tools 8.0 MZTools Software (Basic Partner) Adds many productivity features for C# and VB.NET to code faster, find code faster, design faster, generate documentation, ensure the quality and enhance the Visual Studio experience. Ncache Alachisoft (Premier Partner) Fast and linearly scalable .NET distributed cache. It includes self healing dynamic clusters, sync/async intelligent replication and complete GUI or CL admin tools. It is a 100% native .NET product and can be used from any .NET application. nDepend ZEN PROGRAM (Alliance Partner) NDepend is a Visual Studio and Team Services tool that makes it easy to manage Code Quality on large and complex .NET code base. NDepend v2017 integrates with Visual Studio 2017. Nevron Open Vision for .NET Nevron (Alliance Partner) Provides a powerful set of UI controls and heavy components, so that you can create feature-rich Applications and premium User Interfaces for multiple operating systems from a single code base. It includes UI controls, Grid, Rich Text Editor, Diagram, Chart, Gauge, Schedule and Barcode components. Nevron Vision for .NET Nevron (Alliance Partner) Create unique and powerful data presentation applications with spectacular data visualization capabilities. NUnit 2 Test Adapter NUnit.org The NUnit 2 Test Adapter works with the Visual Studio Test Explorer to allow integrated test execution under Visual Studio 2012 and newer. NUnit 3 Test Adapter NUnit.org The NUnit 3 Test Adapter works with the Visual Studio Test Explorer to allow integrated test execution under Visual Studio 2012 and newer. Object Exporter Omar Elabd (Basic Partner) Export any object while debugging in Visual Studio, the object can be serialized in either C#, JSON or XML. OpsHub Integration Manager OpsHub (Premier Partner) Enables unidirectional and bidirectional real-time synchronization among systems for requirements management, source control, bug tracking, quality management, release management, service desk/help desk, and CRM. OpsHub Visual Studio Migration Utility OpsHub (Premier Partner) Facilitates comprehensive and cost-effective transfers of data and context between Team Foundation Server and Visual Studio Team Services. OzCode CodeValue (Premier Partner) OzCode enhances the C# debugging experience by giving you groundbreaking features and visualizations which help you squash bugs in no time, including the revolutionary new LINQ debugging magic! PHP Tools for Visual Studio DEVSENSE (Alliance Partner) PHP Tools for Visual Studio transparently integrate into Visual Studio to include support for PHP language. It is focused on developer productivity respecting Visual Studio conventions. PostSharp PostSharp Technologies (Basic Partner) Allows developers to eradicate boilerplate by offloading repeating work from humans to machines. Includes some the most common patterns and gives you the tools to build your own. PowerTCP Emulation Dart Communications (Alliance Partner) Leverages a .NET 2.0 re-design. In addition to a sophisticated VT Display control, Emulation for .NET includes all the components and objects found in the PowerTCP Telnet for .NET 4.x product. PowerTCP FTP Dart Communications (Alliance Partner) Copy files between your client and any FTP server - a single method call will do. Simple properties provide fine-grain control and file data will even spool to/from memory. PowerTCP Mail Dart Communications (Alliance Partner) Easily integrate email capabilities like SMTP, POP, and IMAP into applications. PowerTCP Sockets Dart Communications (Alliance Partner) Create multi-threaded TCP servers and powerful TCP/UDP Internet applications in .NET. PowerTCP SSH and SFTP Dart Communications (Alliance Partner) Develop secure SSH and SFTP applications in C# and VB.NET. PowerTCP Telnet Dart Communications (Alliance Partner) Leverages a .NET 2.0 redesign, providing the most advanced Internet Communications components available. Simplifies the use of Rexec, Rsh, Rlogin and Telnet connections by providing methods to establish, use and terminate sessions. Prism Template Pack Brian Lagunas The Prism Template Pack contains a collection of snippets, item templates, and project templates for use with building WPF, UWP, and Xamarin.Forms applications using Prism. Project Connect Tivitie (Basic Partner) Seamless approach to exchange critical information between development teams and project teams using Project Online and VSTS. ProjectConfigurationManager Tom Englert (Basic Partner) Manage your solution and project configurations in one place. Forget about clicking through all the tabs in all the property pages - see all your projects and configurations on one grid. Redgate ReadyRoll Redgate Software (Premier Partner) Extend DevOps processes to your SQL Server databases and safely automate database deployments. Redgate ReadyRoll Pro Redgate Software (Premier Partner) Extend DevOps processes to your SQL Server databases. Develop, source control, and safely automate database deployments alongside application changes in Visual Studio. Release Packager ItsZap (Basic Partner) Release Packager creates versioned release package from multiple projects in Solutions. The versioned release package allows Release Manager to better control the release and enable more granullar deliveries. ReportMax CppMax (Basic Partner) Light weight yet rich reporting tool for Microsoft.net developers. It integrates within Visual Studio and enables .net developers to add reporting capabilities to their Winforms and Webforms (ASP.net) applications. ReSharper Ultimate JetBrains (Premier Partner) ReSharper Ultimate is a set of JetBrains products for .NET, web and C++ developers who use Visual Studio. The set consists of ReSharper, ReSharper C++, dotTrace, dotMemory, dotCover, and dotPeeek. ResXManager Tom Englert (Basic Partner) Provides central access to all ResX-based string resources in your solution. You can quickly navigate through all resource files and view the content in a well-arranged data grid. It makes it easy to find untranslated strings or clean up orphaned entries. All strings can be quickly edited in place, untranslated entries will be created on the fly while typing. Excel export and import lets you easily exchange translations outside of Visual Studio. Automated translations can speed up you localization process. Review Assistant Devart (Alliance Partner) Peer code review tool for Visual Studio. The tool includes lightweight support for formal code review, allows defect and discussion tracking, integrates with code comparison tools and version control systems to facilitate working with code changes. RTX64 Visual Studio Support IntervalZero (Alliance Partner) IntervalZero provides Visual Studio project templates and code snippets for developing Real-time Applications along with an integrated Visual Studio base debug monitor for debugging Real-time applications within the Visual Studio IDE. SAP Mobile Platform SDK for Windows SAP (Premier Partner) Build desktop and mobile apps that keep people connected. It solves mobility challenges, supports desktop and mobile apps that fit your business-to-enterprise (B2E) or business-to-consumer (B2C) use case, and helps balance device user requirements with enterprise requirements. Sauce for Visual Studio Team Services Sauce Labs (Premier Partner) Enables Continuous Delivery by speeding up the testing cycle while increasing the quality of mobile and web applications. SD Elements Security Compass (Premier Partner) Automates software security requirements based on your project’s technology, business and compliance drivers. SD Elements eliminates security vulnerabilities in the most cost effective way, before scanning begins. SoftTree SQL Assistant SoftTree Technologies (Basic Partner) Speed up the database development process, improving code quality and accuracy. It supports 14 popular database server types including SQL Server and SQL Azure. SpecFlow TechTalk (Basic Partner) Bridges the communication gap between domain experts and developers by binding business readable behavior specifications and examples to the underlying implementation. Spread GrapeCity (Premier Partner) Embed Microsoft Excel-compatible spreadsheet functionality for advanced business, engineering, and scientific applications. SQL Prompt Core Redgate Software (Premier Partner) Write, format, and refactor SQL effortlessly. SQL Prompt Pro Redgate Software (Premier Partner) Write, format, and refactor SQL effortlessly. SQL Search Redgate Software (Premier Partner) Speed up SQL database development by finding SQL objects and navigating SQL Server databases fast inside Visual Studio. SQLite / SQL Server Compact Toolbox ErikEJ (Basic Partner) Adds several features to help your embedded database development efforts: Scripting of tables and data, import from SQL Server and CSV files and much, much more. Stored Procedure Generator JSK Software (Basic Partner) Automatically creates CRUD (Select, Insert, Update, and Delete) stored procedures for the tables in your database. Supercharger Michael Kiss (Basic Partner) Significantly improve the Visual Studio development experience with features like CodeMAP, AutoText, Intelligent Code Flow Lines, Code Highlighters, Rich Code, Magic Comments, Phrasing Review, Spellist, SuperFind, Statistics etc. SynergyDE Synergex (Alliance Partner) App development tools that include Synergy DBL, a proven ANSI-standard business language, seamlessly integrated with Visual Studio; a scalable, high-performance ISAM database; SQL and ODBC connectors; and other tools to meet application developers’ requirements for building high-performance, enterprise applications. Tab Studio Sergey Vlasov (Basic Partner) Creates multiple rows of tabs when needed and groups tabs with the same name. Better manage all open documents in Visual Studio, grouped and organized most efficiently. Tasktop Dev Tasktop Technologies (Premier Partner) Integration for ALM systems to the Visual Studio IDE. Developers can leverage Tasktop Dev to view and work on their epics, stories, tasks, and defects from tools such as Microsoft TFS, Atlassian JIRA, HPE ALM, IBM RTC, CA Agile Central, and VersionOne right from their Visual Studio IDE. TeamCoding George Duckett (Basic Partner) Discover team members who are working in the same area of a source controlled solution as you. It displays icons on tabs, text in CodeLens is as well as showing a coloured caret where they are working for C# and visual basic code. TeamCompanion EKOBIT (Basic Partner) Provides for better collaboration, efficient Agile Project Management and increased productivity in daily tasks. TeeChart Steema Software (Alliance Partner) Offers full set of Chart types and a combination Gauge types for dashboard applications. It supports Windows Form, ASP.NET, UWP, WPF and Silverlight, Windows.Store and Windows Phone, Xamarin iOS, Android & Forms and adds many output formats including HTML5/Javascripted charts. Telerik AppBuilder for Visual Studio Telerik by Progress (Premier Partner) Develop, test, debug, build, deploy, and publish cross-platform mobile apps with Apache Cordova or NativeScript. Use the Telerik Platform and Telerik AppBuilder tools and cloud services along with your favorite Visual Studio features to create apps for the major mobile platforms. Telerik UI for ASP.NET AJAX Telerik by Progress (Premier Partner) Telerik UI extensions automatically create, upgrade and configure your Telerik UI projects in seconds, eliminating the need to set any assembly references, handler/module definitions, tag prefixes, etc. manually. Additionally the Visual Studio Extensions Package includes a set of ready-to-use Visual Studio templates that cover common application scenarios for Telerik UI for ASP.NET AJAX. Telerik UI for ASP.NET MVC Telerik by Progress (Premier Partner) The Visual Studio Extensions for Telerik UI for ASP.NET MVC projects is an integration package that aims at significantly increasing your productivity when managing MVC projects in Visual Studio. Includes Project Templates, Configure and Upgrade Wizards. Telerik UI for WinForms VSExtensions Telerik by Progress (Premier Partner) Telerik UI for WinForms Visual Studio Extensions is an integration package that will significantly increase you productivity when managing WinForms projects in Visual Studio. The product helps you work smarter with streamlined features and minimizes the learning curve for new users. Telerik UI for WPF VSExtension Telerik by Progress (Premier Partner) Telerik UI for WPF Visual Studio Extensions is an integration package that will significantly increase you productivity when managing WPF projects in Visual Studio. The product helps you work smarter with streamlined features and minimizes the learning curve for new users. TFS Auto Shelve Vercellone (Basic Partner) Creates a shelveset for the latest version of all pending changes in all TFS workspaces at a configurable interval. The functionality is equivalent to the 2015 version. However, I hope to attend a Visual Studio Extension Migration Workshop tomorrow to explore the possibility of multi-targeting and performance optimization opportunities. TFS Timetracker Berichthaus Software (Basic Partner) Allows tracking directly on workitems. Beyond Work, CI, Test and Sourcecontrol, add Time Management as fifth dimension to TFS. TFSASAP AIT GmbH (Basic Partner) Platform for advanced administration and extensions for TFS. Its a central management location for server-side, event-based, scheduled automations, and administrative extensions. The Modern Requirements Suite 4TFS eDev Technologies (Premier Partner) The MR Suite 4TFS extends TFS/VSTS for requirements management natively, using either platform as its app server and database. The combined solution delivers requirements automation, auditability and collaboration. Time Savers Luminous Software Solutions (Basic Partner) Enhance day-to-day productivity for developing with Visual Studio. TSVN Samir Boulema (Basic Partner) Control TortoiseSVN from within Visual Studio TX Text Control Text Control (Alliance Partner) Reporting and word processing components that offers developers all the features expected in a high end word processing package in reusable component form. Viasfora Tomas Restrepo Viasfora is a free extension for Visual Studio 2012 - 2017 that improves your text editing experience; known mostly for implementing Rainbow Braces for Visual Studio languages! Vidyano 2sky (Alliance Partner) Allows developers to create full featured, secure and scalable web applications in no time. Visual Assist Whole Tomato Software (Premier Partner) Visual Assist is a productivity tool for C/C++ and C# developers of Microsoft Visual Studio. Visual Assist fills IDE gaps in navigation, refactoring, code generation, and coding assistance. Visual COBOL Micro Focus (US) (Premier Partner) Provides COBOL development and integration tools—in your choice of Visual Studio or Eclipse—that offer programmers an unrivaled development experience. Use Visual COBOL to help your AppDev teams work better together and deliver new functionality faster to your business users. Visual Studio Spell Checker EWSoftware (Basic Partner) Checks the spelling of comments, strings, and plain text as you type or interactively with a tool window. It also spell checks an entire solution, project, or selected items. Visual Studio Toolkit Thijs Tijsma (Basic Partner) Provides tools that will help boost your daily productivity in Visual Studio. VisualSVN VisualSVN Software (Alliance Partner) VisualSVN is a Visual Studio plug-in that integrates Subversion and TortoiseSVN seamlessly with Visual Studio. VisualSVN virtually eliminates the management of your project source code files within Subversion. Program, design, debug and deploy with VisualSVN as your silent partner that safeguards your source code. With VisualSVN deployed throughout your development organization, all of your developers will be using Subversion confidently an effectively to manage and safeguard your organization's work product. VSColorOutput Mike Ward VSColorOutput changes the color of a line emitted to the output window based on specified rules. The rules consist of regular expressions. Rules map to classifications which in turn map to colors. Vsdocman Helixoft (Basic Partner) A tool for commenting and the automatic generation of class documentation from your C# and VB .NET source code, including ASP .NET. It creates MSDN-like documentation, IntelliSense and F1 help. VSIXEasyEfRepo Alex Bertini (Basic Partner) Simple implementation of the generic repository pattern. Offers simple CRUD operations on generic entities for quick making of the data layer. VSTS Extension Project Templates Josh Garverick (Basic Partner) Create scaffolded VSTS/TFS extensions in Visual Studio. VSTS on Mobile Canarys Automations (Basic Partner) Access VSTS data from the mobile devices running Android and iOS. The team project data can be accessed by the stakeholders on the move to stay updated on the project health. WakaTime WakaTime (Basic Partner) The WakaTime extension provides metrics, insights, and time tracking automatically generated from your programming activity. With over 30 text editors & IDEs supported, 700+ languages detected, and over 6 million hours coded, WakaTime is the leading automated programming metrics platform. Using open-source text editor plugins, you get real-time insight into your coding activity. WakaTime's dashboard shows how long you spend working in each file, language, project, and branch. See how long your features are taking and improve your estimates. Wallaby.js Wallaby.js (Basic Partner) Wallaby.js is an intelligent and super fast test runner for JavaScript that continuously runs your tests. It reports code coverage and other results directly to your code editor, immediately as you change your code. Wallaby.js is insanely fast, because it only executes tests affected by your code changes and runs your tests in parallel. The tool provides a huge productivity boost whether you are doing TDD/BDD or using any other approach. Wax Tom Englert (Basic Partner) An interactive editor for WiX setup projects. While it's easy to create an empty setup project with the WiX toolkit, populating the list of deployable files and even more keeping the list up to date can be a very fumbling task. This tool is a Visual Studio Extension that helps you to create, verify and maintain the list of deployed files in an interactive gui. WhiteSource WhiteSource (Premier Partner) WhiteSource automatically detects all open source components and their licenses in your build. It also alerts on vulnerable open source components and suggests possible remediation. WhiteSource Bolt is an integrated product within the VSTS and TFS products and runs directly in your build and release pipeline. wiwet ASP.NET Templates wiwet (Basic Partner) Beautiful and fully responsive, cross-browser, and retina ready ASP.NET templates. All the templates we produce are fully compatible with Visual Studio and include master pages, views, partial views, web controls and web pages. They are all ready to go when you need them with absolutely no hassle. Our templates allow you to create brand new projects in less than a minute. Simple. Easy. Fast. WIX Toolset FireGiant (Premier Partner) Powerful set of tools available to create your Windows installation experience. XabluCross for MvvmCross XabluCross (Premier Partner) XabluCross provides enterprise grade support for MvvmCross. With it's expertise and plugin ecosystem it is the recommended partner for companies using Xamarin and MvvmCross. Xsharp Xsharp (Alliance Partner) X# is a .Net development language based on the xBase syntax. It supports multiple dialects of xBase. The "core" language can be seen as C# with an xBase syntax. Other supported dialects are VO/Vulcan, FoxPro, dBase, Xbase++ and Harbour Each dialect adds its own special types All dialects (expect core) support the xBase RDD system with support for many xBase file formats such as DBF/DBT, DBF/FPT and DBF/SMT and index formats NDX, NTX, MDX, CDX, IDX, NSX etc. XtremeDocumentStudio .NET Gnostice Information Technologies (Alliance Partner) A multi-format document-processing framework for .NET developers.

www.visualstudio.com


Смотрите также