Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在构建项目时从配置文件中读取值?_C#_Wix - Fatal编程技术网

C# 如何在构建项目时从配置文件中读取值?

C# 如何在构建项目时从配置文件中读取值?,c#,wix,C#,Wix,我用WIX3.8和VS2013(C#)编程了一个引导程序项目。 在项目文件中,您可以创建类似的属性,用于从应安装的EXE文件获取生成版本: <Target Name="BeforeBuild"> <!-- Set the Variable BuildVersion --> <GetAssemblyIdentity AssemblyFiles="../FilesForSetup/MyApp.exe"> <Output Tas

我用WIX3.8和VS2013(C#)编程了一个引导程序项目。 在项目文件中,您可以创建类似的属性,用于从应安装的EXE文件获取生成版本:

  <Target Name="BeforeBuild">
    <!-- Set the Variable BuildVersion -->
    <GetAssemblyIdentity AssemblyFiles="../FilesForSetup/MyApp.exe">
      <Output TaskParameter="Assemblies" ItemName="AsmInfo" />
    </GetAssemblyIdentity>
    <CreateProperty Value="%(AsmInfo.Version)">
      <Output TaskParameter="Value" PropertyName="BuildVersion" />
    </CreateProperty>
    <CreateProperty Value="$(DefineConstants)">
      <Output TaskParameter="Value" PropertyName="DefineConstantsOriginal" />
    </CreateProperty>
    <CreateProperty Value="$(DefineConstants);BuildVersion=$(BuildVersion)">
      <Output TaskParameter="Value" PropertyName="DefineConstants" />
    </CreateProperty>
  </Target>

现在,我想将Web服务器登录的一些属性(url、用户、pw)放入一个配置文件中,在构建时读取这些属性,并将它们放入项目属性中。 可以这样做吗?哪种类型的配置文件是最佳选择(p.e.XML)


提前谢谢

是的,可以这样做,配置文件类型的最佳选择是XML。 例如,您可以编写web服务器访问的配置文件,如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<parameters>
  <parameter name="webserverurl" value="http://deviis.myCompany.net/release/" />
  <parameter name="webserveruser" value="administrator" />
  <parameter name="webserverpassword" value="myPassword" />
</parameters>
<XmlPeek Namespaces="&lt;Namespace Prefix='myNamespace' Uri='http://schemas.microsoft.com/developer/msbuild/2003'/&gt;" XmlInputPath="..\AppConfig\appconfig.xml" Query="/parameters/parameter[@name='webserverurl']/@value">
  <Output TaskParameter="Result" PropertyName="webserverurlResult" />
</XmlPeek>
<CreateProperty Value="$(DefineConstants);WebServerUrl=$(webserverurlResult)">
  <Output TaskParameter="Value" PropertyName="DefineConstants" />
</CreateProperty>
UrlWebapi = Bootstrapper.Engine.StringVariables["WebServerUrl"];
在这种情况下,UrlWebapi是字符串类型的属性。 我希望这有帮助

<XmlPeek Namespaces="&lt;Namespace Prefix='myNamespace' Uri='http://schemas.microsoft.com/developer/msbuild/2003'/&gt;" XmlInputPath="..\AppConfig\appconfig.xml" Query="/parameters/parameter[@name='webserverurl']/@value">
  <Output TaskParameter="Result" PropertyName="webserverurlResult" />
</XmlPeek>
<CreateProperty Value="$(DefineConstants);WebServerUrl=$(webserverurlResult)">
  <Output TaskParameter="Value" PropertyName="DefineConstants" />
</CreateProperty>
UrlWebapi = Bootstrapper.Engine.StringVariables["WebServerUrl"];