Как ограничить или контролировать артефакты публикации для AWS Visual Studio Toolkit? - PullRequest
2 голосов
/ 28 июня 2019

Я создаю лямбду с помощью c # несколькими различными способами (без сервера, лямбда, с / без тестов), и в результате я получаю множество элементов в файле .zip опубликованных артефактов, которые действительно не нужны. Если я развертываю Lambda и в решении есть тестовый проект, я щелкаю правой кнопкой мыши по project -> Publish to AWS, следую за подсказками, и в итоге архивируются библиотеки xunit вместе со многими локализованными версиями Microsoft.TestPlatform и Microsoft.VisualStudio.TestPlatform артефакты. Вывод будет выглядеть примерно так:

... zipping: xunit.abstractions.dll
... zipping: xunit.assert.dll
... zipping: xunit.core.dll
... zipping: xunit.execution.dotnet.dll
... zipping: xunit.runner.reporters.netcoreapp10.dll
... zipping: xunit.runner.utility.netcoreapp10.dll
... zipping: xunit.runner.visualstudio.dotnetcore.testadapter.dll
... zipping: cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
... zipping: cs/Microsoft.TestPlatform.CoreUtilities.resources.dll
... zipping: cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
... zipping: cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
... zipping: cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
... zipping: de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
... zipping: de/Microsoft.TestPlatform.CoreUtilities.resources.dll
... zipping: de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
... zipping: de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
... zipping: de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
... zipping: es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
... zipping: es/Microsoft.TestPlatform.CoreUtilities.resources.dll
... zipping: es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
... zipping: es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
... zipping: es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
... zipping: fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
... zipping: fr/Microsoft.TestPlatform.CoreUtilities.resources.dll
... zipping: fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
... zipping: fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
... zipping: fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
... zipping: it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
... zipping: it/Microsoft.TestPlatform.CoreUtilities.resources.dll
... zipping: it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
... zipping: it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
... zipping: it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
... zipping: ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
... zipping: ja/Microsoft.TestPlatform.CoreUtilities.resources.dll
... zipping: ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
... zipping: ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
... zipping: ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
... zipping: ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
... zipping: ko/Microsoft.TestPlatform.CoreUtilities.resources.dll
... zipping: ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
... zipping: ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
... zipping: ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
... zipping: pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
... zipping: pl/Microsoft.TestPlatform.CoreUtilities.resources.dll
... zipping: pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
... zipping: pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
... zipping: pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
... zipping: pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
... zipping: pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll
... zipping: pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
... zipping: pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
... zipping: pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
... zipping: ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
... zipping: ru/Microsoft.TestPlatform.CoreUtilities.resources.dll
... zipping: ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
... zipping: ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
... zipping: ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
... zipping: tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
... zipping: tr/Microsoft.TestPlatform.CoreUtilities.resources.dll
... zipping: tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
... zipping: tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
... zipping: tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
... zipping: zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
... zipping: zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll
... zipping: zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
... zipping: zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
... zipping: zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
... zipping: zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
... zipping: zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll
... zipping: zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
... zipping: zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
... zipping: zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  1. Есть ли способ ограничения того, какие файлы попадают в папку zip, отправляемую в AWS?
  2. Есть ли способ исключить локализованные библиотеки?
  3. Могу ли я исключить другие проекты, которые не являются зависимостями?
  4. Могу ли я сохранить все свои проекты в одном решении и иметь возможность публиковать их, используя встроенные механизмы, не отправляя посторонние проекты?

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

Поиск в Интернете, Исключение файлов и папок из развертывания выглядело многообещающе, но для меня это не имело никакого значения (возможно, я сделал что-то не так?).

1 Ответ

1 голос
/ 11 июля 2019

Возможно, это неправильный ответ на ваш вопрос, но я столкнулся с чем-то похожим и хотел предоставить более подробную информацию.

Я не использую Visual Studio Professional.У меня есть AWS VS Toolkit для VS 2017, но, похоже, пункт контекстного меню проекта «Опубликовать в AWS» доступен только в VS 2019.

Я работал с проектом, созданным с помощью SAM CLIкоманда

sam init -r dotnetcore2.1 -o sam-runtime-dotnetcore21

... которая создает пример безсерверного проекта с файлами .sln и двумя файлами .csproj.Структура выглядит примерно так:

src/
  HelloWorld/
    HelloWorld.csproj
    Program.cs
test/
  HelloWorld.Test/
    FunctionTest.cs
    HelloWorld.Tests.csproj
Solution.sln
template.yaml

Если вы запустите следующую команду из корня проекта (тот же самый cwd, что и у файла Solution.sln и template.yaml), вы получите выходные данные из обоихпроекты src и test в одном пользовательском месте вывода, которое должно быть ./publish из корня проекта:

dotnet publish --output ../../publish

Чтобы получить выходные данные только из проекта src, исключая тестовый проект, вы можетезапустите ту же команду, например, так:

dotnet publish ./src/HelloWorld/HelloWorld.csproj --output ../../publish

Хотя я не проверял, я предполагаю, что инструментальное средство VS Pro 2019 просто собирает команды dotnet publish и не предоставляет правильный аргумент csproj.Вы всегда можете просто запустить пользовательскую команду dotnet publish для сборки, а затем указать точку входа кода функции в эту выходную папку при упаковке лямбда-кода функции в s3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...