【问题标题】:How do you limit or control publishing artifacts for the AWS Visual Studio Toolkit?您如何限制或控制 AWS Visual Studio Toolkit 的发布工件?
【发布时间】:2019-06-28 20:21:55
【问题描述】:

我正在使用 c# 几种不同的方式(无服务器、lambda、带/不带测试)创建一个 lambda,我最终在发布工件 .zip 文件中得到了很多确实不需要存在的项目。如果我正在部署 Lambda 并且解决方案中有一个测试项目,我右键单击 project -> Publish to AWS,按照提示操作,它最终会压缩 xunit 库以及许多本地化版本Microsoft.TestPlatformMicrosoft.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. 有没有办法限制哪些文件进入发送到 AWS 的 zip 文件夹?
  2. 有没有办法排除本地化库?
  3. 我可以排除其他不依赖的项目吗?
  4. 我能否将我的所有项目保留在同一个解决方案中,并且能够使用内置机制进行发布,而无需发送无关项目?

我遇到的问题是它增加了部署包的大小并且文件从未使用过,因此它会影响我的 s3 存储成本,导致 lambda 冷启动时间变慢和效率低下。

在互联网上搜索,Excluding Files and Folders from Deployment 看起来很有希望,但对我来说并没有什么不同(也许我做错了什么?)。

【问题讨论】:

标签: aws-lambda publish visual-studio-2019 aws-visual-studio-toolkit


【解决方案1】:

这可能不是您问题的正确答案,但我遇到了类似的问题并想提供更多详细信息。

我没有使用 Visual Studio Professional。我有适用于 VS 2017 的 AWS VS 工具包,但似乎“发布到 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

如果您从项目的根目录(与 Solution.sln 和 template.yaml 文件相同的 cwd)运行以下命令,您将在单个自定义输出位置中同时获得 src 和测试项目的输出,应该是项目根目录下的 ./publish:

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

为了只从 src 项目中获取输出,不包括测试项目,您可以像这样运行相同的命令:

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

虽然我还没有验证,但我认为 VS Pro 2019 工具只是组装 dotnet publish 命令并且没有提供正确的 csproj 参数。您始终可以只运行自定义dotnet publish 命令进行构建,然后在将 lambda 函数代码打包到 s3 时将函数代码入口点指向该输出文件夹。

【讨论】:

  • 感谢您的回答,我对这个答案投了赞成票,因为它确实提供了解决方法/命令行解释什么是或可能导致我遇到的问题。
猜你喜欢
  • 2012-05-21
  • 2022-01-08
  • 1970-01-01
  • 1970-01-01
  • 2017-12-09
  • 1970-01-01
  • 2019-12-26
  • 1970-01-01
  • 2015-09-06
相关资源
最近更新 更多