2014-09-04 53 views
12

我使用通過部署 Web應用程序。MSDeploy - 允許參數在parameters.xml中爲可選/空的

我正在使用paramaters.xml文件來操縱我的應用程序的,特別是應用程序settings部分。

我有一些設置,它只是有效的一個特定的環境值,其餘的時間值應該是空白的(即屬性應該只有一個生產值)。然而,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> 

回答

30

我碰到這個問題跑了一段時間後,發現該溶液在Richard Szalay's blog。您需要將parameterValidation添加到您的參數聲明:

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

感謝那些做到了!歡迎來到SO – 2014-09-04 11:25:38

+2

我只想指出這[IIS.net頁面](http://www.iis.net/learn/develop/windows-web-application-gallery/reference-for-the-web-application -package)不能用於MsBuild 14.'parameterValidation'應該有'kind'屬性而不是'type'屬性。 – 2015-11-18 01:02:31

4

我認爲你正在尋找<parameterValidation />

在你parameters.config:

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