Подтвердить что ты не робот

MSDeploy - разрешить параметр необязательно/пусто в параметрах .xml

Я использую для развертывания a веб-приложение через .

Я использую файл paramaters.xml для управления моим приложением , в частности настройки раздел.

У меня есть несколько настроек, где он действителен только для значения для конкретной среды, а в остальное время значение должно быть пустым (т.е. свойство должно иметь значение только для Production). Однако MSDeploy дает мне это исключение, когда я не укажу значение:

 Microsoft.Web.Deployment.DeploymentException: 
   The 'facebookUserToken' argument cannot be null or empty.
   at Microsoft.Web.Deployment.DeploymentSyncParameterValidation.Validate(String parameterName, String parameterValue)
   at Microsoft.Web.Deployment.DeploymentSyncParameter.set_Value(String value)
   at Microsoft.Web.Deployment.DeploymentSyncParameterCollection.LoadFromFile(XPathNavigator nav, String fileName, Boolean ignoreExtraSetParameters)
   at Microsoft.Web.Deployment.DeploymentSyncParameterCollection.Load(Stream stream, String fileName, Boolean ignoreExtraSetParameters)
   at Microsoft.Web.Deployment.DeploymentSyncParameterCollection.Load(String fileName, Boolean ignoreExtraSetParameters)
   at MSDeploy.MSDeploy.HandleSetParameters(DeploymentObject sourceObject, Random random)
   at MSDeploy.MSDeploy.ExecuteWorker()
   at MSDeploy.MSDeploy.Execute()
   at MSDeploy.MSDeploy.Main(String[] unusedArgs)

Как настроить MSDeploy, чтобы параметр имел пустое значение?

web.config:

<applicationSettings>
    <SO.Example>
        <setting name="FacebookUserToken" serializeAs="String">
           <value></value>
        </setting>
    </SO.Example>
</applicationSettings>

parameters.config:

   <parameter name="facebookUserToken" description="" defaultValue="">   
      <parameterEntry kind="XmlFile" scope="Web.config"
      match="XPath removed for readability">
       </parameterEntry>
   </parameter>
4b9b3361

Ответ 1

Я просмотрел эту проблему некоторое время назад и нашел решение в блоге Ричарда Салаи. Вам нужно добавить параметрValidation в объявление параметра:

<parameters> 
   <parameter name="ReplaceVariable"
          description="Sample variable that allows empty values" defaultValue="">
     <parameterValidation kind="AllowEmpty" />
     <parameterEntry type="TextFile" scope="Web\.config$" match="TextToReplace" /> 
   </parameter> 
</parameters> 

Итак, для вашего конкретного случая:

  <parameter name="facebookUserToken" description="" defaultValue="">   
      <parameterValidation kind="AllowEmpty"/>
      <parameterEntry kind="XmlFile" scope="Web.config"
      match="XPath removed for readability">
       </parameterEntry>
   </parameter>

Ответ 2

Я думаю, что вы ищете <parameterValidation />.

В файле parameters.config:

<parameter name="facebookUserToken" description="" defaultValue=""> 
    <parameterValidation kind="AllowEmpty" />  
    <parameterEntry kind="XmlFile" scope="Web.config"
       match="XPath removed for readability">
    </parameterEntry>
</parameter>