Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何通过脚本模拟用于VisualStudio的AWS Toolkit中的构建和部署功能?_C#_Visual Studio_Powershell_Amazon Web Services - Fatal编程技术网

C# 如何通过脚本模拟用于VisualStudio的AWS Toolkit中的构建和部署功能?

C# 如何通过脚本模拟用于VisualStudio的AWS Toolkit中的构建和部署功能?,c#,visual-studio,powershell,amazon-web-services,C#,Visual Studio,Powershell,Amazon Web Services,我有一个带有几个不同项目的.NET解决方案。我现在通过AWS工具包设置了每一个脚本,所以我可以右键单击并点击“重新部署到AWS…”,但我想做的是创建一个脚本(可能是PowerShell?),自动构建和部署我的所有项目 我知道AWS Toolkit有一个CLI版本,名为awsdeploy.exe,但它似乎不像AWS Toolkit插件那样执行项目的编译和归档 如何模仿这种行为?所以我目前正在工作中解决这个问题,并取得了部分成功。我发现,您可以使用msbuild进行打包,然后使用awsdeploy进

我有一个带有几个不同项目的.NET解决方案。我现在通过AWS工具包设置了每一个脚本,所以我可以右键单击并点击“重新部署到AWS…”,但我想做的是创建一个脚本(可能是PowerShell?),自动构建和部署我的所有项目

我知道AWS Toolkit有一个CLI版本,名为awsdeploy.exe,但它似乎不像AWS Toolkit插件那样执行项目的编译和归档


如何模仿这种行为?

所以我目前正在工作中解决这个问题,并取得了部分成功。我发现,您可以使用msbuild进行打包,然后使用awsdeploy进行部署

例如,如果我有一个名为bas的VisualStudio解决方案,它有两个项目foo和bar,并且我想部署bar,那么我首先用msbuild打包bar

msbuild bar/bar.csproj/t:Package/p:PackageLocation=barPackage.zip

这将在bar目录下创建一个包调用barPackage.zip。如果找不到它,请查看msbuild输出,因为它应该让您知道它是在哪里创建的

现在我们有了包,可以部署了。Awsdeploy需要一个配置文件。它只是一个包含形式为“key=value”的键值对的文件。在awsdeploy.exe所在的同一目录中,名为Samples\的目录中有一个示例文件

如果您使用的是visual studio,则在部署到aws时可以选择创建配置文件

更多信息:

假设我们有一个名为deployConfig.txt的配置文件,那么我们可以像这样调用awsdeploy

awsdeploy/r deployConfig.txt

请注意/r用于重新部署。这假定您已经有一个正在运行的环境

如果您不想将凭证放入文件中,也可以这样做

awsdeploy/r/DAWSAccessKey=stuff/DAWSSecretKey=stuff部署

通常,我们可以通过添加/Dsomething=stuff这样的命令来指定文件中不需要的任何内容。正如您在上面看到的,指定AWSSecretKey时,我们使用/DAWSSecretKey=stuff

VisualStudio生成的文件没有列出包的位置,因此我一直在做的是

awsdeploy/r/DAWSAccessKey=stuff/DAWSSecretKey=stuff/DDeploymentPackage=bar/bar.zip deployConfig.txt


这几乎适用于我。但遗憾的是,这并没有起到很好的作用。它部署了这个包,我可以看到环境试图加载它,但在某个时候失败了。我不知道为什么它无法加载它。当我从visual studio部署它时,它可以很好地加载它。

这就是我们处理它的方式。所有这些都在我们的CI服务器上运行:

步骤1-使用msbuild生成web部署包:

msbuild website.csproj/t:WebPublish/p:WebPublishMethod=Package /p:DesktopBuildPackageLocation=website.zip/p:Configuration=Release /p:deployiisappath=“默认网站”

步骤2-使用awsdeploy部署:

awsdeploy.exe/DAWSAccessKey=**/DAWSSecretKey=**/r config.txt

config.txt:

DeploymentPackage = .\website.zip 
AWSProfileName = ****** 
Region = us-east-1 
Template = ElasticBeanstalk 
UploadBucket = ***********
Application.Name = *********** 
Environment.Name = ***********

你能分享确切的ps1文件示例吗?我正在尝试让它运行,但awsdeploy始终给我一个关于输入语法错误的错误。这是错误:10:45:26“C:\Program Files(x86)\AWS Tools\Deployment Tool\awsdeploy.exe”-v-DApplication.Name=“”-DDeploymentPackage=“C:\\.zip”-DawsAccess Key=”