2014-09-04 22 views
12

web uygulaması aracılığıyla dağıtmak için kullanıyorum.MSDeploy - Parametre parametre.xml içinde isteğe bağlı/boş bırakılmasına izin ver

Uygulamanızın , özellikle uygulama settings bölümünü değiştirmek için paramaters.xml dosyasını kullanıyorum.

Yalnızca belirli bir ortam için bir değere sahip olması ve kalan zamanın boş bırakılması için geçerli olduğu bazı Ayarlar var (örneğin, Mülk yalnızca Üretim üzerinde bir değere sahip olmalıdır).

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) 

nasıl MSDeploy bir parametre boş değere sahip izin vermek için yapılandırabilirsiniz: Ancak, MSDeploy bana değil bir değer belirtin yaptığınızda bu durum verir?

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> 

cevap

30

Bir süre önce bu konuda koştu ve Richard Szalay's blog de çözüm buldu. Eğer parametre ilanına parameterValidation eklemek gerekir: kendi özel durumunuz için Yani

<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> 

: did it

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

Teşekkür! Ve –

+2

'a hoşgeldiniz. Sadece şunu belirtmek isterim: [IIS.net sayfası] (http://www.iis.net/learn/develop/windows-web-application-gallery/reference-for-the-web-application -package) MsBuild ile çalışmaz. 14 'parameterValidation'' type' özniteliği yerine 'kind' özniteliğine sahip olmalıdır. –

4

Sana <parameterValidation /> aradığınız düşünüyorum. senin parameters.config olarak

:

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