从引用的dll自动复制配置文件

时间:2009-09-15 09:29:58

标签: visual-studio msbuild compilation

我的VS2005解决方案中有2个项目:Exe.csproj和Dll.csproj

Dll.csproj有一个app.config

Exe.csproj有一个对Dll.csproj的项目引用

如果我编译Exe.csproj,则会将Dll.dll和Dll.pdb自动复制到Exe / bin / debug,但不会复制到Dll.dll.config。

有没有办法在没有post build事件技术的情况下在Exe / bin / debug中获取Dll.dll.config?

2 个答案:

答案 0 :(得分:2)

MSBuild救援!

将以下目标粘贴到项目文件中:

 <Target Name="CopyConfig"
        Inputs="@(DetectedConfig)"
        Outputs="@(DetectedConfig->'$(OutDir)%(Filename)%(Extension)')"
        AfterTargets="DetectConfigFiles">
    <Copy SourceFiles="@(DetectedConfig)"
          DestinationFiles="@(DetectedConfig->'$(OutDir)%(Filename)%(Extension)')">
        <Output TaskParameter="CopiedFiles"
                ItemName="CopiedConfig" />

    </Copy>
    <Message Importance="High"
             Condition="'%(CopiedConfig.FullPath)'!=''"
             Text="Copied config: %(CopiedConfig.FullPath)" />
</Target>

<Target Name="DetectConfigFiles" AfterTargets="ResolveAssemblyReferences">
    <ItemGroup>
        <!-- Add .config onto all the assemblies we reference -->
        <PossibleConfig Include="%(ReferencePath.FullPath).config" />
    </ItemGroup>

    <!-- Work out which ones actually exist in the file system -->
    <ItemGroup>
        <DetectedConfig Include="@(PossibleConfig)" Condition="Exists('%(PossibleConfig.Identity)')" />
    </ItemGroup>
</Target>

答案 1 :(得分:0)

右键单击该文件(Dll.dll.config)并查看其属性。

将Copy to Local设置为True。这会自动将文件放在输出目录中。

善,