我们可以自动复制* .dll.config吗?
在引用库程序集时,它会自动复制到最终的bin目录。 但是* .dll.config不是,有没有办法自动复制这个配置文件?
在Visual Studio中,当您打开活动文件时,会出现“属性”部分。 对于App.config,它有一个名为Copy to Output Directory
的属性,选项是
-
Do Not Copy
-
Copy if Newer
-
Copy Always
您需要第二个或第三个选项。
将dll项目中的app.config重命名为[dllname] .dll.config。 将同一文件的属性更改为“始终复制”并重建。 对我很有用。 我还尝试通过VS中的“设置”对话框添加另一个设置,即使它不再是app.config,它也会更新。 BTW使用VS2013更新3。
执行类似操作的另一种方法是使用项目文件夹中的[dllname] .dll.config创建一个硬链接文件,并将其上的属性更改为“始终复制”,这样您仍然可以正常使用app.config但如果你更新它,它也会更新你的[dllname] .dll.config文件。 这里唯一真正的警告是当你检查像TFS这样的源代码控制时它可能无法跟踪硬链接,你可能会意外覆盖链接。 但是当你“添加和现有项目”作为链接时,它确实会尊重链接,因此它可能适用于您的情况,也可能不适用。 你决定。
以下post有一个更好的答案:
Visual Studio / MSBuild将引用类库的app.config复制为* .dll.config到当前项目的bin文件夹
// Add this at the end of your .csproj file before and after $(TargetName).dll.config PreserveNewest
使用默认CLR主机,只有EXE可以具有.config文件。 不是DLL。 复制.dll.config文件应该没有意义,除非您自己打开并自己解析文件。 在这种情况下,您应该使用不同的名称以避免混淆。
我有同样的问题。 您可以遇到属性无法帮助您在需要的地方复制app.config的情况。 比如当你做集成unit testing时。 那么你可以有两个选择:
-
使用post build事件
copy / Y“$(ProjectDir)App.config”“…. \ test \ Debug \ $(TargetFileName).config”
-
手动将配置文件部分从libA.dll复制到libA.Test.dll
我最终使用了2,因为它对我来说更加强大。
虽然我迟到了,但我的回答可以帮助别人。 我使用以下命令作为预构建事件:
copy /Y $(SolutionDir)\[YOUR_LIBRARY_PROJECT]\app.config $(ProjectDir)$(OutputPath)[YOUR_LIBRARY_NAME].dll.config
我试图尽可能地动态,并且上面的命令有效。
- 如何正确提供的数据?
- 如何在使用paint时在WinForms中实现垂直和水平滚动条?
- 错误“非静态字段,方法或属性’QuickSharp.CokeMachine.TotalInsertedCoins’需要对象引用”
- 无法将System.EventHandler类型隐式转换为System.EventHandler 错误
- ADOentity framework是否支持非DTC交易? 一个EntityContext和一个TransactionScope内的多个查询导致DTC升级
- 如何比较GetPixel方法的颜色和Color.Black等方法中传递的颜色?
- C#中的TypeInitializationException
- C#:如何以编程方式将SQL脚本导入数据库?
- 删除arrayList中的元素后出现InvalidOperationException