Visual Studio:将C#项目构建到自定义目录

时间:2014-02-16 04:12:16

标签: visual-studio msbuild visual-studio-2013 clickonce

我有一个C#项目。构建之后,需要部署4个文件:

  1. MyProj.exe
  2. MyProj.exe.config
  3. MyProj.pdb
  4. MyProj.XML
  5. 这些文件和MyProj的引用dll位于输出目录bin/Release中。

    我想自定义输出目录(部署遵循此目录层次结构):

    +bin/Release
    |--MyProj.exe
    |--MyProj.exe.config
    |--MyProj.pdb
    |--MyProj.XML
    |--+lib
    |--|--<MyProj's refer dll>
    |--+plugin
    |--|--<empty directory. before deployment, I'll copy into there manually>
    |--+Help
    |--|--<empty directory. before deployment, I'll copy into there manually>
    

    (当然,probingPath="lib"中有MyProj.exe.config。)

    到现在为止,我手动制作目录。但我想自动这样做。有没有办法通过Visual Studio自动执行此操作?

    我想将MyProj部署到ClickOnce。我可以将此目录层次结构(包含我在plugin/Help/内手动复制的文件)部署到ClickOnce吗?

3 个答案:

答案 0 :(得分:1)

您可以通过调用MSBuild中的Copy任务来自动执行此操作。右键单击并选择“卸载”后,通过在Visual Studio IDE中打开.csproj来执行此操作。然后再次右键单击并编辑.csproj文件,该文件将以文本/ XML格式显示.csproj文件。

然后粘贴以下内容并将其更改为您的特定要求。请注意,目标是AfterBuild

<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
    <PropertyGroup>
        <YourDestinationDirectory>..\SomeDestinationDirectory</YourDestinationDirectory>
        <YourSourceDirectory>..\SomeSourceDirectory</YourSourceDirectory>
    </PropertyGroup>

    <Target Name="AfterBuild">
        <CreateItem Include="$(YourSourceDirectory)\**\*.*">
            <Output TaskParameter="Include" ItemName="YourFilesToCopy" />
        </CreateItem>

        <Copy SourceFiles="@(YourFilesToCopy)"
                DestinationFiles="@(YourFilesToCopy->'$(YourDestinationDirectory)\%(RecursiveDir)%(Filename)%(Extension)')" />
    </Target>
</Project>

您可以通过打开Visual Studio命令提示符并针对项目文件运行MSBUILD.exe来轻松测试MSBUILD更改。这样做是1比1,所以你可以立即发现任何错误。

答案 1 :(得分:1)

我的建议是在解决方案文件中创建所需的所有文件夹(因此它们将由Visual Studio管理) - 然后设置单击这些文件夹中文件的“属性”,并设置Build Action ContentCopy to Output DirectoryCopy if Newer

enter image description here

我一直使用这个技巧来确保在BIN文件夹中创建文件和文件夹,我可以在以后使用它们。

这样做的另一个好处是您不需要修改构建步骤以便通过ClickOnce处理这些文件 - 只需转到项目属性 - &gt;发布 - &gt;应用程序文件 - 并为您需要的文件将Publish Status设置为“包含”。它们将与您的应用一起部署。

enter image description here

答案 2 :(得分:0)

在Visual Studio中,您可以右键单击项目并转到属性。在项目属性中,单击“构建”选项卡。这里可以自定义您的输出位置。同样在“构建事件”选项卡下,您可以执行命令以执行准备或后期构建工作。