Visual studio version selector что это

Обновлено: 07.07.2024

В Интернетах написано немало статей об инкрементировании версий своих приложений и каждый использует свой метод. У кого-то ревизии используются в качестве «билдов», у кого-то это количество секунд текущих суток (например, Microsoft), у кого-то что-то другое.

В моем проекте используются 4 определяющие версии.

Например, 1.2.34.56, где:
1 — Major version: Критические изменения проекта (введен новый функционал, в корне переработан существующий и пр.). Устанавливается вручную;
2 — Minor version: Изменение функциональных частей приложения, значительное улучшение кода и пр. Устанавливается вручную;
24 — Build: номер релиза, попадающего в общество. Назначается автоматически;
56 — Revision: номер ревизии, полученный с GIT. Назначается автоматически.

Я не буду рассматривать кто какими методами пользуется, поэтому напишу как достиг данного результата.

Шаг 1. Подготовка

Сперва нам нужно зайти в настройки проекта (Project -> MyProject Properties). Здесь, во вкладке Application, идем в Assembly Information и проверяем, чтобы все 4 поля параметра Assembly version были заполнены, причем, первые 2 цифры указываем соответствующие нашему релизу. В моем случае это версия "2.3", а остальные цифры ставим любые.

image

После внесения изменений нам нужно зайти в папку проекта и найти файл AssemblyInfo.cs, который обычно находится в папке Properties.
Открываем файл на редактирование и в самом низу ищем строки:

Удаляем закомментированную строку:

Сделать это необходимо по той причине, что при записи новой версии будет использоваться регулярное выражение, считывающее ключевые цифры версии (major, minor) из первого найденного совпадения.
Удалили, сохранили, закрыли файл. Более он нам не понадобится.

Шаг 2. «ChangeRevision»

Для удобства я скомпилировал консольное приложение, которое считывает значения major, minor и build из файла Properties\AssemblyInfo.cs, а также количество коммитов GIT.
Итак, код ChangeRevision.exe:

Скомпилированный файл кладем в директорию Solution.

Ниже подробнее распишу как работает данный код.

Шаг 3. Pre-Build Event

Так как мне необходимо изменить версию билда перед компиляцией, код вписывается в окно Pre-Build Event.


image

Где:
"$(SolutionDir)ChangeRevision.exe" — Указывается путь к solution с указанием запуска нашего скомпилированного файла, о котором написано выше.
$(ConfigurationName) — Тип конфигурации (Debug или Release).
Если при запуске файла ChangeRevision.exe был передан параметр Debug, то в версии проекта будет увеличено только значение ревизии, то есть, если было 2.3.0.0, то станет 2.3.0.х, где «х» — количество коммитов по проекту. Если передан параметр Release, то автоматически будет инкрементирован номер билда совместно с изменением ревизии по количеству коммитов. Например, было 2.3.0.0, станет 2.3.1.х, где «х» — количество коммитов по проекту.
"$(ProjectName)" — Имя проекта

UPD: Из кода программы был удален параметр, содержащий имя проекта, так как при компиляции проекта стартовой директорией запуска файла с параметром являлась $(ProjectDir)\bin\Debug / Release, вследствие чего возникала ошибка. Таким образом, передача наименования проекта отпала как таковая, так как в работе приложения ChangeRevision.exe используется переход на верхний уровень относительно директории запуска, то есть, указав путь "..\..\Properties\AssemblyInfo.cs" программа переходит в директорию проекта и от туда в «Properties», где и находит необходимый файл AssemblyInfo.cs"

UPD 2: Как показала практика, если в Solution находится несколько проектов и выбрать на компиляцию не тот, что по-умолчанию, то стартовой директорией будет, почему-то, директория проекта по-умолчанию. В общем, код еще немного доработан и изменен вверху, а именно, вновь введен параметр передачи наименования проекта, который в ChangeRevision.exe перехватывается вторым по счету. Таким образом, путь к к AssemblyInfo.cs был изменен на:

То есть, при компиляции любого проекта стартовая директория смещается на 3 ступени вверх (директория solution), а затем перемещается в папку проекта, указанную в параметре запуска файла, переходя к искомому файлу.

Количество коммитов можно узнать путем передачи параметра

Это в том случае, если нужно получить количество коммитов из ветки MASTER.

По завершению работы приложения будет изменен файл Properties\AssemblyInfo.cs, переданного в первом параметре, проекта, после чего среда разработки скомпилирует файл самого проекта с указанной в файле версией.
P.S.: При изменении версии AssemblyVersion также изменяется и значение в параметре AssemblyFileVersion, а в некоторых случаях и AssemblyFileVersionAttribute.

Таким образом я достиг полуавтоматического инкрементирования версии своего приложения.

P.S.: Конечно, работая в команде или выполняя регулярное объединение версий, данный вариант не подходит ВООБЩЕ не подходит, так как количество коммитов может внезапно сократиться, таким образом получем «новую» «старую» версию ПО. А для одного человека, без использования объединения версий, данный вариант более чем достаточен.

Спасибо за внимание!

UPD: Внес изменения в код на Шаге 2. Поправил описание
UPD 2: Все на том же шаге вновь изменения в коде.

This forum has migrated to Microsoft Q&A. Visit Microsoft Q&A to post new questions.

Visual studio home link

Answered by:

Question

I have a PC which had only Visual Studio 2013 until we install SQL 2012 which uses Visual Studio 2010. Since then, each time I click on a SLN, even thought I specifically check Always open with Visual Studio 2013, it opens a dialog box with an error as shown in this image :

First of all, I don't have Visual Studio 2010 at all on this PC so what can I really do in order to make sure that every single .SLN it opens it only with Visual Studio 2013 ?

Is there any way to UNINSTALL this Visual Studio Version Selector, I really don't want it EVER .
Any help would be greatly appreciated.

Answers

  • Marked as answer by Jack Zhai-MSFT Microsoft contingent staff Monday, April 21, 2014 6:14 AM

All replies

Even in ASSOCIATE A FILE TYPE OR PROTOCOL WITH SPECIFIC PROGRAM in the Control Panel, when I double click the .sln and associate it to Visual Studio 2013 the screen refreshes and it's still with Visual Studio 2010, HELP .

Thank you for posting in the MSDN forum.

Just to make this issue clearly, do you mean that you didn’t install the VS2010 in your machine before? What does it mean “we install SQL 2012 which uses Visual Studio 2010”?

If you mean that you install it before, but you have uninstalled it, maybe you didn’t uninstall it completely.

Invalid License Data. Reinstall is required

I just did some research about the above error, I got some threads/blog about this issue. Maybe you could refer them.

I doubt that it would be the VS Setup and Installation issue, but actually I’m still not very sure about it, since I didn’t met this issue before. Sorry for that no real solution for this issue.

If there's any concern, please feel free to let me know.

We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
Click HERE to participate the survey.

Well, I had Visual Studio 2010 in the past but removed it completely. Everything was fine BEFORE installing SQL 2012 and when I say SQL 2012 uses Visual Studio 2010 what I wanted to say is that it uses its IDE and since installing SQL 2012 did install this IDE, it was probably using some of the old Visual Studio 2010 installation registry keys. That's what I think.

Now sorry but I was unable to wait for a solution because it's absolutely horrible so I get things done by hand going in the Registry and removing everything about this Visual Studio 2010 IDE and now I'm with another kind of problem :(

Now when I click a .SLN, it opens the dialog to ask me with what I want to open it REGARDLESS of the effort I put to tell it to always open using Visual Studio 2013 which result in nothing more than keeping the status : UNKNOWN PROGRAM in the ASSOCIATE AN EXTENTION WITH A PROGRAM from Control Panel.

I'm completely disapointed and tired and I'm starting to loose patient as everybody around me even IT professional doesn't even know what to do :

I have Visual Studio 2008 and 2010 installed side by side, but trying to open either a 2008 or 2010 sln file results in nothing. The hour glass comes on for about a second and then it goes away and nothing is opened.

I read somewhere to relate sln file to VS directly, but I can't go that route because I don't want 2008 solutions to open with 2010. Does anyone know what the problem might be and how to fix it?


8,673 9 9 gold badges 43 43 silver badges 65 65 bronze badges 6,492 5 5 gold badges 59 59 silver badges 104 104 bronze badges

3 Answers 3

If you are running Vista or Windows 7 with the UAC enabled and have "Run this program as an Administrator" checked on the Compatibility tab for the Visual Studio exe (devenv.exe), you will get this behavior when you try to open a sln file directly from Windows Explorer.

One solution is to go to "%ProgramFiles%\Common Files\Microsoft Shared\MSEnv" or ("%ProgramFiles(x86)%\Common Files\Microsoft Shared\MSEnv" for 64-bit systems) and right-click VSLauncher.exe and select Properties. On the Compatibility tab, check "Run this program as an Administrator". Now when you try to open a sln file directly from Windows Explorer, you will get the elevation prompt and it will open the correct version of Visual Studio for the file.

that is exactly how i have my environment set up. Is there any way to fix this issue?

From within a Visual Studio 2010 Tools prompt, extract the manifest from VSLauncher.exe:

  1. Alter the VSLauncher.exe.manifest file:
  1. Write back the manifest into VSLauncher.exe:

The really annoying thing about this problem is that you have to run Visual Studio as administrator under windows 7 to attach to an IIS instance. The least they could do was not break the .sln files when you do that!

The post by Jorge Poveda is correct though, the original hack no longer works but his does. It's maybe worth mentioning that you have to run everything as administrator for it to work (the command prompt and text editor).

Читайте также: