gpt4 book ai didi

c# - 在构建过程中添加 Web 引用

转载 作者:行者123 更新时间:2023-11-30 20:58:23 25 4
gpt4 key购买 nike

我在 Visual Studio 2005 中有一个 C# 解决方案。在一个项目中有一个 Web 引用,当我必须为确定的环境构建项目时,我必须更改它,从 Visual Studio 中手动删除该引用,然后添加一个新的同名,但更改了 url。

我想让这个手动添加网络引用的过程不那么乏味。

我希望在配置管理器中,除了调试和发布配置、开发、预生产和生产配置之外,它们中的每一个都确定与特定环境关联的正确网络引用。

我正在考虑创建一个 preBuild 事件(可能是一个 .bat 文件),在其中根据构建配置正确创建 Web 引用。

我不确定该怎么做。我对此有一些疑问:

1) 我可以创建不同的“app.config”文件,其中属性

<setting name="MyService_serviceagent" serializeAs="String">
<value>developmentEnvironmentURL</value>
</setting>

会因环境而异,我可以根据所选配置复制正确的 app.config 文件。

这会从网络引用中重新生成 Reference.cs 文件吗? (我猜不会)。即使接口(interface)没有更改,这是否会成为一个问题,或者如果我仅在想要重新生成类时手动重新生成 Webreference 就足够了?

2) 这样做是个坏主意吗?当我想构建指向确定环境的解决方案时,您是否想到任何替代方案,或者更容易接受我应该删除并添加相应的 Web 引用?

感谢您的阅读:)

问候。

最佳答案

There is a web reference in one project that I have to change when I have to build the project for a determined environment, manually deleting the reference from Visual Studio, and adding a new one with the same name, but changing the url. [...] I was thinking of creating a preBuild event where the web reference would be created correctly.

我认为这不是一个好的或可维护的解决方案。您能否解释为什么您认为您需要重新添加引用(如果更改的只是 URL)?为什么不能只更改 web.config 中的服务 URL?

无论如何,如果您必须有两个单独的引用,则将它们都添加,这样每个服务引用都可以有自己的配置。最终,您可以将这些服务引用放在一个单独的库中,您可以从主项目中引用它。然后在需要服务的项目中,您在代码中选择要使用的实现(例如,这可能取决于每个项目的环境变量,因此您可以在编译时确定它,或者只是一个配置值,以便选择适当的服务在运行时)。

第三种解决方案可能是不创建引用,而是利用 ClientBase<T>在运行时创建代理的位置。

关于c# - 在构建过程中添加 Web 引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16165864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com