首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在构建时在ASP.Net MVC应用程序中合并第三方应用程序接口调用

如何在构建时在ASP.Net MVC应用程序中合并第三方应用程序接口调用
EN

Stack Overflow用户
提问于 2018-08-26 23:28:01
回答 2查看 1.1K关注 0票数 0

好了,这是我的故事。

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

项目1:所以到目前为止,我已经有了一个运行良好的MVC应用程序。(主应用程序)

项目2:我已经创建了另一个小的控制台应用程序(只是一个基本的),它有一个端点,它调用第三方并获取.resx文件并保存到一个位置。

问题1:

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

问题2:

调用第三方的项目2需要是控制台应用程序还是mvc应用程序等等?我不确定

问题3:

我走的方向对吗。当我的项目1构建时,我想要的就是调用第三方API并将一些文件下载到特定的文件夹。

问题4:

我需要使用MS-Build来执行Project2.exe然后再执行Project1.exe吗?那么当项目1.exe开始构建时,文件就在那里了吗?

问题5:

我真的需要一个完全独立的项目来调用API来获取resx文件吗?

请给我引路。

项目2代码:

代码语言:javascript
复制
     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");
    }

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-27 00:03:48

在您的project1 csproj文件中,您可以通过以下方式指定后期构建事件:

代码语言:javascript
复制
<PropertyGroup>
  <PostBuildEvent>
    Call "FullyResolvedPathToYour.exe" "Arg1" "Arg2"
  </PostBuildEvent>
</PropertyGroup>

我不知道你的exe是怎么叫的,所以你必须根据你的要求进行调整。另请注意,Visual Studio环境变量和系统环境变量的格式如下:$(Variable)

有关此概念的更多信息,请阅读此处:https://docs.microsoft.com/en-us/visualstudio/ide/how-to-specify-build-events-csharp?view=vs-2017

票数 1
EN

Stack Overflow用户

发布于 2018-08-27 22:41:24

如果需要,您可以使用CURL对端点进行API调用。因此,您不必编写自定义exe文件来下载resx。这个问题的用法超出了这个范围。我不是这方面的专家。无论如何,您可以在构建csproj文件之前调用它。

如果您在构建之后调用API,请不要使用<PostBuildEvent>。就像拿着锤子去做手术一样。过度杀伤力。请改用Target。

代码语言:javascript
复制
<Target Name="Call your Stuff" AfterTargets="Build">
    <Exec Command="FullyResolvedPathToYour.EXE arg1 arg2 etc" WorkingDirectory="..." />
</Target>

如果您需要在构建之前调用此目标,只需将AfterTargets更改为BeforeTargets

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52027690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档