2016-12-08 3 views
0

Я пытаюсь использовать публикацию Click-Once, проблема в том, что она также публикует файл Config, который имеет строки подключения, которые я использую на своем компьютере разработки, а не правильный которые я использую в производственной среде. Как я могу запретить публикацию файла Config больше, чем в первый раз? Я попробовал в свойствах, чтобы не включать его в список публикации, но нет возможности сделать это.Предотвращение создания файла конфигурации из публикации при развертывании с использованием Click-Once

+0

Я не являюсь автором и не имею никакого отношения к проекту, но есть плагин для визуальной студии (бесплатно, как в пиве), который применяет преобразования app.config так же, как работает встроенный механизм преобразования web.config. Он называется SlowCheetah, и он позволяет вам иметь разные настройки конфигурации на основе профиля сборки. https://marketplace.visualstudio.com/items?itemName=WillBuikMSFT.SlowCheetah-XMLTransformsm Смысл, вы можете опубликовать фиктивный конфигурационный файл, например, при развертывании в Release. – Tommy

ответ

0

Файлы конфигурации являются частью развертывания, так как они сохраняют все необходимые настройки, которые используются внутри Addin.

Если я правильно понял проблему, вы хотите использовать некоторые настройки, скажем HOSTURL=http://example.com, когда Addin находится в рабочей среде, и HOSTURL=http://localhost, когда вы разрабатываете Addin, и вы ожидаете, что все это будет автоматически без участия человека.

Затем, вы можете попробовать один из них:

[1] Попробуйте найти ClickOnceLocation и использовать настройки в зависимости от значения ClickOnceLocation. Предполагая, что ClickOnceLocation содержит "Debug" при разработке/отладке Addin.

//CodeBase is the location of the ClickOnce deployment files 
Uri uriCodeBase = new Uri(assemblyInfo.CodeBase); 
string ClickOnceLocation = Path.GetDirectoryName(uriCodeBase.LocalPath.ToString()); 
if(ClickOnceLocation.Contains("Debug")) 
{ 
    URL = "http://localhost";  
} 
else 
{ 
    URL = //from app.config 
} 

[2] Updating the app.config by using build configurations

Есть несколько трюков, которые вы можете использовать так, чтобы другой файл со значениями на сервере получить взял во время опубликовать.

У вас может быть два отдельных файла конфигурации один для локального развертывания/отладки и один для реальной опубликованной или производственной версии приложения. Файл конфигурации отладки может указывать на сервер localhost, тогда как реальный опубликованный файл конфигурации может указывать на реальный сервер. Затем вы можете сконфигурировать конфигурации сборки таким образом, чтобы соответствующий файл конфигурации был выбран в зависимости от конфигурации активной сборки.

Чтобы добавить в проект два разных файла app.config, вы можете обновить ссылку на app.config в файле проекта. App.config определен в файле проекта (vbproj или csproj) со следующим XML:

<ItemGroup> 

… 

<None Include=”app.config” /> 

</ItemGroup> 

Там могут быть и другие узлы в ItemGroup вместе с узлом app.config. Удалите только app.config из этого ItemGroup узла и создать новый ItemGroup в узле со следующим XML:

<ItemGroup Condition=” ‘$(Configuration)|$(Platform)’ == ‘Debug|AnyCPU’ “> 
<None Include=”app.config” /> 
</ItemGroup> 

<ItemGroup Condition=” ‘$(Configuration)|$(Platform)’ == ‘Release|AnyCPU’ “> 
<None Include=”publishedapp.config” /> 
</ItemGroup> 

В основном это означает, что обычный файл app.config будет использоваться при активной конфигурации установлено значение Отладка и модифицированный app.config с реальными производственными переменными, хранящимися в «опубликованной» подпапке проекта, используются, когда для активной конфигурации установлено значение «Выпуск».

Вы можете изменить условия ItemGroup, чтобы соответствовать другим конфигурациям сборки, которые вы, возможно, определили. Одна из возможностей состоит в том, чтобы иметь отдельную конфигурацию «Опубликовать», определенную на основе конфигурации «Release», но используемую только тогда, когда вы собираетесь публиковать приложение.

Дополнительный отказ от этого процесса заключается в том, что сама проектная система VS и разработчики не знают о дополнительном файле app.config; Visual Studio знает только исходный файл. Измененный файл app.config со значениями для производственной среды используется только процессом msbuild. Поэтому, если вы обновите основной файл app.config через Design Designer, измененный файл app.config не будет обновлен, и вам придется вручную обновить файл.

После того, как вы правильно настроили проект, вы можете просто переключаться между различными конфигурациями сборки, чтобы изменить файл конфигурации и опубликовать приложение из Visual Studio, не переходя в процесс обновления и повторной подписи.

+0

Большое спасибо всем Ответчикам, я буду изучать материал и отмечать их соответственно – burech

 Смежные вопросы

  • Нет связанных вопросов^_^