我有一个类库,许多其他Web应用程序项目都引用了它。它在app.config
中有许多设置,我希望在所有引用Web项目中使用它们。构建类库后,它会将app.config
复制到其自己的bin
文件夹中<assembly.name>.dll.config
。
<assembly.name>.dll.config
被复制到每个引用Web应用程序项目的bin文件夹中?Copy to Output Directory
或Build Action
(任意组合)不起作用。 顺便说一句:在每个Web应用程序项目中手动放置所有这些配置是不切实际的。我可以通过在bin文件夹中查找<assembly.name>.dll.config
来读取该文件,并从那里提取设置。我已经可以做到这一点,所以这不是问题 - 我只需要确保文件将在那里阅读
答案 0 :(得分:11)
通过将以下内容添加到类库的项目文件assembly.name.csproj
中,可以在没有第三方工具的情况下实现:
// Find this <Import> element for Microsoft.CSharp.targets
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
// Add this <ItemGroup> element immediately after
<ItemGroup>
<Content Include="app.config">
<Link>$(TargetName).dll.config</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
这会导致app.config
被复制到引用它为<assembly.name>.dll.config
的任何项目。这很好,因为您只需配置一个.csproj
文件,效果就会级联到所有引用项目。
答案 1 :(得分:2)
对于Visual Studio 2015,我使用@theyetiman的解决方案(请参阅此answer):
<ItemGroup>
<None Include="app.config" />
</ItemGroup>
<ItemGroup>
<None Include="app.config">
<Link>$(TargetFileName).config</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
(Microsoft.CSharp.targets
的导入已经存在。)
在我的实验中,Visual Studio 2017似乎开箱即用地处理配置文件。不需要手动修改项目文件。