【问题标题】:C++/CX Visual Studio 2013 - Include / Reference / Link files Programmatically inside Visual StudioC++/CX Visual Studio 2013 - 在 Visual Studio 中以编程方式包含/引用/链接文件
【发布时间】:2014-07-31 23:19:45
【问题描述】:

我需要以编程方式添加文件,而不是使用 Visual Studio IDE 添加文件。

这是因为 Javascript 需要在构建时从项目外部的父文件夹(根据客户定制)添加,并在构建时移动到项目内部。虽然我可以使用 msbuild 方法将文件移动到项目中,但该项目不会引用这些文件。我在 msbuild xml 文件中搜索了一个解决方案,但没有任何运气。有没有办法通过 xml 解析器本地执行此操作?

如果有人知道怎么做,请告诉我?

【问题讨论】:

  • 我不明白你想在这里实现什么。如果您在运行时只需要 Javascript 文件,那么为什么需要将它们添加到您的 Visual Studio 项目文件中?
  • 我的意思是“构建时间”。

标签: msbuild visual-studio-2013 microsoft-metro c++-cx


【解决方案1】:

使用 msbuild 文件(扩展名为 .vcxproj 的主项目文件)我能够提出静态链接文件的解决方案:

  <ItemGroup>
    <None Include="www\**">
      <DeploymentContent>true</DeploymentContent>
    </None>
  </ItemGroup>

并动态删除文件并将其复制到所需的目录:

  <Target Name="CleanTarget">
    <Message Text="Clean Target" Importance="high"></Message>
    <RemoveDir Directories="www" ContinueOnError="true" />
    <Message Text="Remove File Command" Condition="Exists('www')" Importance="high"></Message>
  </Target>
  <!-- http://msdn.microsoft.com/en-us/library/3e54c37h.aspx -->

  <Target Name="CopyFiles">
    <Message Text="CopyFiles Target" Importance="high"></Message>
    <Copy
        SourceFiles="@(MySourceFiles)"
        DestinationFiles="@(MySourceFiles->'www\%(RecursiveDir)%(Filename)%(Extension)')"
        />
  </Target>

  <Target Name="BeforeBuild">
    <Message Text="Create Before Build" Importance="high"></Message>  
  </Target>

  <Target Name="AfterBuild">
    <CallTarget Targets="CleanTarget"></CallTarget>
    <CallTarget Targets="CopyFiles"></CallTarget>
  </Target>

我的新问题是该项目仅从以前的构建案例中获取更改。这意味着如果切换到另一个 javascript 文件夹,我需要运行该项目两次。

技术问题是在我的 C++/CX 应用程序项目中没有调用 BeforeBuild 事件(我相信它可以从我从 Internet 上读取的线程中的 C# 项目中工作)。

【讨论】:

    【解决方案2】:

    此链接从下面解决了“技术”问题:

    http://social.msdn.microsoft.com/Forums/en-US/21720645-fed8-4a5d-84ea-1cbcf2796920/beforecompile-beforebuild-fail-to-execute-for-vcxproj-c-projects?forum=msbuild

    虽然它没有解决在切换到新的 js 文件夹时必须编译两次项目的问题。就我而言,这是不可能的。除非找到更好的解决方案,否则我会检查上一个答案(下面的那个)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多