【问题标题】:Create folder inside debug or release con console application在调试或发布控制台应用程序中创建文件夹
【发布时间】:2011-10-21 12:19:27
【问题描述】:

我在 vs2010 (C#) 中有一个控制台应用程序,在项目中,我添加了一个文件夹(右键单击项目.. add-> 文件夹),我希望在编译应用程序时使用它(调试或发布),则该文件夹将在调试或发布目录中创建(如果不存在)。

这可能吗?

控制台应用程序是一个守护程序,它访问数据库并发送带有分配在该文件夹中的模板的电子邮件。

我希望你能帮助我。谢谢!

【问题讨论】:

    标签: c#-4.0 compilation console-application directory


    【解决方案1】:

    在构建期间没有“自动”的方式让 VS 创建文件夹(指定的输出文件夹除外),但有两种非常简单的方法可以完成它。

    • 使用您在项目属性的“构建事件”选项卡中设置的构建后事件。这基本上是您在构建完成后运行的批处理文件,如下所示:

      IF NOT EXIST $(OutDir)MySubFolder MKDIR $(OutDir)MySubFolder
      XCOPY /D $(ProjectDir)MySubFolder\*.tmpl $(OutDir)MySubFolder
      
    • 使用 MSBuild 的 AfterBuild 事件。这是我的首选方法,主要是因为它更好地与我们的自动化构建过程集成,但它涉及更多:

      1. 右键单击您的项目节点并卸载它
      2. 右键单击卸载的项目节点并编辑文件
      3. 靠近底部的是一对被注释掉的 XML 节点。取消注释 AfterBuild 目标并将其替换为以下内容:

        <Target Name="AfterBuild">
            <MakeDir Directory="$(OutDir)MySubFolder" Condition="!Exists('$(OutDir)MySubFolder')" />
        
            <CreateItem Include="$(ProjectDir)MySubFolder\*.tmpl">
              <Output TaskParameter="Include" ItemName="Templates" />
            </CreateItem>    
        
            <Copy SourceFiles="@Templates" DestinationFolder="$(OutDir)MySubFolder" ContinueOnError="True" />
        </Target>
        
      4. 保存更改,关闭 .csproj 文件,然后右键单击并重新加载项目。

    【讨论】:

    • 哇!好的!唯一的问题是在 Release 文件夹(或 Debug)中创建了文件夹,但里面没有复制任何内容,并且在 relese 文件夹中出现了一个 bin 目录,其中包含 release 文件夹。
    【解决方案2】:

    我解决了,像这样: 在 csproj 中:

    <Target Name="AfterBuild">
        <MakeDir Directories="$(OutDir)EmailTemplates" Condition="!Exists('$(OutDir)EmailTemplates')" />
        <ItemGroup>
          <Templates Include="$(ProjectDir)EmailTemplates\*.*" />
        </ItemGroup>
        <Copy SourceFiles="@(Templates)" DestinationFolder="$(OutDir)EmailTemplates" />
      </Target>
    

    感谢您的帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-22
      • 1970-01-01
      • 2011-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多