【问题标题】:Silverlight MSBuild Task - execute command line after Xap copied to ClientBinSilverlight MSBuild 任务 - Xap 复制到 ClientBin 后执行命令行
【发布时间】:2012-04-10 06:27:30
【问题描述】:

我有一个silverlight项目安排如下:

  • 示例
    • 银光

        • 调试
    • 示例代码
      • {多个子目录}
  • Silverlight.Web
      • 调试
        • ClientBin
          • Silverlight.Web.xap

{Multiple Sub Directories} 下的代码包含在 silverlight DLL 中并已编译,但是我也想将这些文件作为“内容”包含在 xap 文件中。想想 .NET 控件的演示应用程序,它向您展示了一个演示以及实现它的 C#/xaml 代码。这就是我想要做的。

  • 我无法选择包含作为内容,因为它们已经包含在编译中
  • 我不能包含两次文件并编译一个和内容另一个因为 VS2010 不会让你。

我想在输出 xap 文件中包含 Examples/Silverlight/ExampleCode 文件夹下的所有文件/文件夹。为了实现这一点,我尝试了 Silverlight.Web 项目的构建后事件。语法如下:

"$(SolutionDir)..\Lib\7Zip\7z.exe" a  -tzip 
    "$(ProjectDir)ClientBin\Silverlight.Web.xap" 
    "$(SolutionDir)Examples\Silverlight\Bin\Debug\ExampleCode"

现在,如果我在控制台窗口中执行它,它会完美运行。 xap 文件已更新。但是,如果我从 Silverlight.Web 中的构建后事件执行它,则没有任何反应(没有失败,只是没有)。

我假设在创建 xap 文件之前 触发了构建后事件。

有谁知道我如何在 xap 文件复制到 ClientBin 之后 运行 MSbuild 任务或命令行构建后事件?

【问题讨论】:

    标签: silverlight command-line msbuild


    【解决方案1】:

    您可以通过将文件添加到 Silverlight 项目的 AfterCompile 目标中的 XapFilesInputCollection 来解决此问题。但请注意,在 Visual Studio 中编译时,直接在项目中包含 bin 文件夹可能会导致访问被拒绝错误。

    <Target Name="AfterCompile">
      <ItemGroup>
        <XapFilesInputCollection Include="$(SolutionDir)Examples\Silverlight\Bin\$(Configuration)\ExampleCode"/>
      </ItemGroup>
    </Target>
    

    【讨论】:

      猜你喜欢
      • 2010-09-17
      • 2010-11-02
      • 1970-01-01
      • 2010-12-06
      • 1970-01-01
      • 1970-01-01
      • 2019-07-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多