Я разрабатываю расширение Visual Studio, и я хотел бы выполнить некоторую логику после установки или удаления NuGet. Есть ли событие, которое я могу контролировать для этого? Я пробовал OnItemAdded и OnItemDeleted в интерфейсе IVsHierarchy, но проблема в том, что он будет выполняться много раз за установку/удаление из-за количества файлов, которые добавляются или удаляются в решение. Я хочу запустить событие после завершения процесса NuGet.Visual Studio Extension - событие после установки или удаления NuGet?
ответ
Вы можете использовать API NuGet в Visual Studio и слушать события NuGet, такие как PackageInstalling или PackageInstalled. Но убедитесь, что вы используете эти события в пакетном режиме, а также прослушиваете BatchStart и BatchEnd из интерфейса NuGet IVsPackageInstallerProjectEvents, чтобы он не ухудшал производительность NuGet.
Подробнее об этих API-интерфейсах here можно найти на блоге NuGet.
В идеале, когда вы получаете событие BatchStart, вы будете продолжать выполнять события IVsPackageInstallerEvents, такие как PackageInstalling, PackageInstalled и т. Д. И применять их после получения события BatchEnd.
Aashish - можно ли каким-то образом предоставить код в качестве примера? Я изо всех сил пытаюсь добиться этого. Благодаря! – bgeveritt
Это может быть так просто, как указано ниже. Просто не забудьте использовать https://dotnet.myget.org/F/nuget-build/api/v3/index.json как Nuget Feed, чтобы получить последний пакет NuGet.VisualStudio (v4.0.0-rc3-2137).
[Import]
private IVsPackageInstallerEvents packageInstallerEvents;
[Import]
private IVsPackageInstallerProjectEvents packageInstallerProjectEvents;
private string currentBatchId;
private Dictionary<string, string> packagesMetadata;
public void BindNuGetPackageEvents()
{
packageInstallerProjectEvents.BatchStart += (projectMetadata) =>
{
// preserve current batch id or project name to compare with batch end event
currentBatchId = projectMetadata.BatchId;
Console.WriteLine("Current Project Name : " + projectMetadata.ProjectName);
};
packageInstallerEvents.PackageInstalled += (metadata) =>
{
// package being insalled in current project
// Save package metadata to use at batch end event
packagesMetadata.Add(metadata.Id, "installed");
};
packageInstallerEvents.PackageUninstalled += (metadata) =>
{
// package being uninstalled in current project
// Save package metadata to use at batch end event
packagesMetadata.Add(metadata.Id, "uninstalled");
};
packageInstallerProjectEvents.BatchEnd += (projectMetadata) =>
{
if (currentBatchId == projectMetadata.BatchId)
{
// Now you can use your packages metadata saved during packageinstalled or packageuninstalled events
foreach (var packageName in packagesMetadata.Keys)
{
Console.WriteLine(string.Format("Package {0} was {1}", packageName, packagesMetadata[packageName]));
}
}
};
}
- 1. Проект установки Visual Studio и Nuget
- 2. Событие изменения WindowState в Visual Studio extension
- 3. visual studio 2012 crash после установки visual studio 2013
- 4. Visual Studio 2010 - Удаление NuGet
- 5. Ошибка установки NuGet 1.8
- 6. Измените папку установки Visual Studio после установки
- 7. Visual Studio не видит NuGet
- 8. Visual Studio Commandline Extension
- 9. X.PagedList.MVC пространство имен недоступно после установки NuGet
- 10. Visual Studio TestStack.White NuGet
- 11. После установки System.ComponentModel.TypeConverter, NuGet breaks
- 12. Git Extension для Visual Studio
- 13. Как обновить менеджер пакетов Nuget без установки Visual Studio?
- 14. Visual Studio 2010 исчезает после установки Visual Studio 2013
- 15. Visual Studio/NuGet отсутствует ссылки
- 16. Как настроить проект Visual Studio для установки зависимостей от Nuget
- 17. MvcSiteMapProvider MVC4 Ошибка установки Nuget Visual Studio 2013
- 18. Ошибка установки пакета Xamarin.Forms Nuget в Visual Studio
- 19. Контекстное меню Visual Studio остается после удаления
- 20. Цвета в Visual Studio Extension
- 21. В проекте установки Visual Studio, как мне создать сценарий удаления?
- 22. Ошибка установки Visual Studio
- 23. Ошибка System.web.webpages после установки Visual Studio 2012
- 24. Ремонт Visual Studio после чистой установки Windows
- 25. InvalidOperationException После установки Visual Studio 11 Beta
- 26. История версий Visual Studio Nuget
- 27. Место установки Visual Studio
- 28. Visual Studio Extension KeyProcessor Alt Key
- 29. Проект установки Visual Studio
- 30. Visual Studio Button Событие
Что вы хотите сделать с таким событием? т. е. представьте, что было такое событие, для чего вы собираетесь его использовать? –
Я хотел бы собрать определенные метаданные о пакетах, которые используются в решении, и представить эту информацию в окне инструмента. Я могу, конечно, сделать это, попросив пользователя вручную вызвать логику нажатием кнопки, но я надеялся, что есть возможность также выполнить ее за кулисами. – bgeveritt