如何在ASP.Net MVC应用程序的构建期间合并第三方api调用 [英] How to incorporate a third party api call during build time in ASP.Net MVC Application

查看:79
本文介绍了如何在ASP.Net MVC应用程序的构建期间合并第三方api调用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

好的,这是我的故事.

我有一个运行良好的 ASP.Net MVC Web应用程序.但是它需要一些 .resx 文件(某些翻译的文化/语言),该文件是通过制作API Call to a third party end point来获得的.这些 .resx 文件需要带到应用程序的相应文件夹 everytime my web project builds 中.因为这些resx文件可能会在第三方位置更改,所以每次在Web应用程序上运行构建时,我都需要获取新鲜文件.

项目1:因此,到目前为止,我有一个运行良好的MVC Web应用程序. (主要应用)

项目2:我创建了另一个小型控制台应用程序(只是一个基本的控制台应用程序),该应用程序具有一个端点,该端点可以调用第三方并获取.resx文件并保存到某个位置. /p>

问题1:

要完成我想做的事情,我需要有一个单独的Project 2,它将进行第三方调用并将文件复制到Project 1的相应目录中.

问题2:

调用第三方的项目2必须是控制台应用程序或mvc应用程序,还是什么?我不确定

问题3:

我朝着正确的方向前进.当我构建项目1 时,我只想要它,我想调用第三方API并将一些文件下载到特定文件夹中.

问题4:

我需要使用MS-Build来执行Project 2.exe,然后执行Project 1.exe.以便在项目1.exe开始构建时有文件存在?

问题5:

我真的需要一个完全独立的项目来使API CALL获得resx文件吗?

请指导我.

项目2代码:

     class Program
{
    static void Main(string[] args)
    {
        Task.Run(() => CallHttp());
        System.Console.ReadLine();
    }
    // Simple async function returning a string...
    static public async void CallHttp()
    {
        var client = new HttpClient();
        client.BaseAddress = new Uri("https://api.crowdin.com/");
        HttpResponseMessage response = await client.GetAsync("api/project/refele/download/all.zip?key=f23e2c91833c0de737");
        using (Stream stream = await response.Content.ReadAsStreamAsync())
        using (FileStream fs = new FileStream(@".\..\..\alpha\test.zip", FileMode.Create))
            await stream.CopyToAsync(fs);
        System.IO.Compression.ZipFile.ExtractToDirectory(@".\..\..\alpha\test.zip", @".\..\..\beta");
    }

}

解决方案

在project1 csproj文件中,您可以按照以下方式指定后建事件:

<PropertyGroup>
  <PostBuildEvent>
    Call "FullyResolvedPathToYour.exe" "Arg1" "Arg2"
  </PostBuildEvent>
</PropertyGroup>

我不知道您的exe的调用方式,因此您需要进行调整以满足您的要求.还要注意,您可以使用以下格式的Visual Studio环境变量和系统环境变量供您使用:$(Variable)

有关此概念的更多信息,可以在这里阅读:

In your project1 csproj file you can specify a post-built event in the follwing manner:

<PropertyGroup>
  <PostBuildEvent>
    Call "FullyResolvedPathToYour.exe" "Arg1" "Arg2"
  </PostBuildEvent>
</PropertyGroup>

I don't know how your exe is called, so you'll have adjust to meet your requirements. Also note you have Visual Studio environment variables and system environment variables available to you in this format: $(Variable)

For more information on this concept, you can read here: https://docs.microsoft.com/en-us/visualstudio/ide/how-to-specify-build-events-csharp?view=vs-2017

这篇关于如何在ASP.Net MVC应用程序的构建期间合并第三方api调用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆