【问题标题】:Custom settings in MSBuild for Windows PhoneMSBuild for Windows Phone 中的自定义设置
【发布时间】:2015-03-09 15:59:32
【问题描述】:

我有一个为我执行 MSBuild 的 Jenkins 服务器。 有一大堆构建需要完成,它们都使用相同的解决方案文件,但对于每个构建都需要更改一些自定义设置。

应用需要能够读取这些设置。

例如,如果我要这样构建:

 msbuild MyProject.sln /p:MyVar=SomeValue

然后当应用程序启动时,它应该能够检索 MyVar 的值。 例如,应用应该能够在以标题“SomeValue”开头时显示消息框。

我知道我可以按照 Microsoft 的 here 所述定义属性,但我不知道在应用启动时如何读取这些属性。 或者,也许我只是在寻找一种完全错误的方法。

有什么想法吗?

【问题讨论】:

    标签: c# properties jenkins msbuild windows-phone


    【解决方案1】:

    您需要 msbuild 来创建一个包含值的文本文件。为此,您可以在 msbuild 文件中使用 MSBuild.Community.Tasks.TargetTemplateFile 任务。

    CreateAppVarFile.targets文件:

    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <PropertyGroup>
        <MSBuildCommunityTasksPath>$(SolutionDir)\.build</MSBuildCommunityTasksPath>
      </PropertyGroup>
      <Import Project="$(MSBuildCommunityTasksPath)\MSBuild.Community.Tasks.Targets" />
    
      <Target Name="CreateAppVarFile">
        <ItemGroup>
          <TemplateContext Include="MyVar">
            <ReplacementValue>$(MyVar)</ReplacementValue>
          </TemplateContext>
        </ItemGroup>
        <TemplateFile Template="$(MSBuildThisFileDirectory)appvar.txt" OutputFilename="$(ProjectDir)appvar.txt" Tokens="@(TemplateContext)"/>
      </Target>
    </Project>
    

    然后这个目标将包含在您的项目文件中

    <Import Project=".\build\CreateAppVarFile.targets" />
    <Target Name="BeforeBuild" DependsOnTargets="CreateAppVarFile">
    

    您的 CreateAppVarFile.targets 文件所在文件夹中的 .\build\appvar.txt 模板文件可能如下所示:

    $(MyVar)
    

    并在运行时从您的应用中读取。不要忘记在您的项目中包含 appvar.txt。它将包含:

    SomeValue
    

    【讨论】:

    • 嘿,谢谢。我已经按照您告诉我的方式设置了项目,但出现此错误:“F:\BuildApp\BuildApp.csproj”(默认目标)(1)->(_CheckForInvalidConfigurationAndPlatform 目标)->C:\Program Files (x86) \MSBuild\12.0\bin\MSBuild.ExtensionPack.tasks(3,5):错误 MSB4068:元素 无法识别,或在此上下文中不受支持。 [F:\BuildApp\BuildApp.csproj]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    • 1970-01-01
    • 2011-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多