Добавить веб-ссылку в процессе сборки
У меня есть решение C# в Visual Studio 2005. В одном проекте есть веб-ссылка, которую я должен изменить, когда мне нужно построить проект для определенной среды, вручную удалив ссылку из Visual Studio и добавив новую с помощью то же имя, но смена URL.
Я хотел бы сделать этот ручной процесс добавления веб-ссылки не таким утомительным.
Я хотел бы иметь в диспетчере конфигурации, помимо конфигураций отладки и выпуска, конфигураций разработки, подготовки и производства, каждая из которых определяет правильную веб-ссылку, связанную с конкретной средой.
Я думал о создании события preBuild (возможно, файла.bat), где в зависимости от конфигурации сборки веб-ссылка будет создаваться правильно.
Я не уверен, как это сделать. У меня есть несколько вопросов по этому поводу:
1) Я мог бы создать разные файлы "app.config", где свойства
<setting name="MyService_serviceagent" serializeAs="String">
<value>developmentEnvironmentURL</value>
</setting>
будет отличаться в зависимости от среды, и я мог бы скопировать правильный файл app.config в зависимости от выбранной конфигурации.
Будет ли это заново сгенерировать файл Reference.cs из веб-ссылки? (Наверное, нет). Будет ли это проблемой, даже если интерфейс не изменился, или было бы достаточно, если бы я заново создавал веб-ссылку вручную, только когда я хочу заново сгенерировать класс?
2) плохая идея сделать это? Думаете ли вы о каких-либо альтернативах, или проще принять то, что я должен удалить и добавить соответствующую веб-ссылку, когда я хочу построить свое решение, указывающее на определенную среду?
Спасибо за чтение:)
С уважением.
1 ответ
В одном проекте есть веб-ссылка, которую мне нужно изменить, когда мне нужно построить проект для определенной среды, вручную удалив ссылку из Visual Studio и добавив новую с тем же именем, но изменив URL. [...] Я думал о создании события preBuild, где веб-ссылка будет создана правильно.
Я не думаю, что это хорошее или поддерживаемое решение. Можете ли вы объяснить, почему, по вашему мнению, вам нужно повторно добавить ссылку, если все, что меняется, это URL? Почему вы не можете просто изменить URL службы в файле web.config?
В любом случае, если у вас должно быть две отдельные ссылки, добавьте их обе, чтобы каждая ссылка на службу могла иметь свою собственную конфигурацию. В конечном итоге вы можете поместить эти сервисные ссылки в отдельную библиотеку, на которую вы ссылаетесь из основного проекта. Затем в проекте, который нуждается в сервисах, которые вы выбираете в коде, какую реализацию использовать (это может зависеть, например, от переменных среды проекта), так что вы можете определить его во время компиляции или просто значение конфигурации, чтобы выбрать правильный сервис во время выполнения).
Третьим решением может быть не создание ссылки, а использование ClientBase<T>
где вы создаете прокси во время выполнения.