在构建过程中添加Web引用

时间:2013-04-23 09:33:48

标签: c# .net web-reference

我在Visual Studio 2005中有一个C#解决方案。当我必须为确定的环境构建项目,从Visual Studio手动删除引用并添加新项目时,我必须更改一个项目中的Web引用一个具有相同名称,但更改网址。

我想使这个添加网络参考的手动过程不那么繁琐。

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

我在考虑创建一个preBuild事件(可能是.bat文件),根据Build Configuration,可以正确创建Web引用。

我不确定如何做到这一点。我对此有一些疑问:

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

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

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

这会从Web引用重新生成Reference.cs文件吗? (我猜不会)。 即使接口没有改变,这也会成为一个问题,或者只有当我想重新生成类时才能手动重新生成webreference?

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

感谢您阅读:)

问候。

1 个答案:

答案 0 :(得分:4)

  

当我必须为确定的环境构建项目,从Visual Studio手动删除引用,并添加具有相同名称的新引用但更改URL时,我必须更改一个项目中的Web引用。 [...]我正在考虑创建一个preBuild事件,其中将正确创建Web引用。

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

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

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