当引用一个库程序集时,它被自动复制到最终的bin目录中。然而,* .dll.config不是,有没有办法自动复制这个配置文件?我们可以自动复制* .dll.config吗?
回答
在Visual Studio中,当您打开活动文件时会出现'属性'部分。对于App.config中,它有一个叫Copy to Output Directory
属性,选项有
Do Not Copy
Copy if Newer
Copy Always
你想第二个或第三个选项。
对于默认的CLR主机,只有一个EXE可以有一个.config文件。不是DLL。复制.dll.config文件应该毫无意义,除非您明确地打开并解析文件。在这种情况下,您应该使用不同的名称以避免混淆。
为什么我没有dll的配置文件?那有什么问题?正如你可能知道ASP.NET网站被编译成dll。你是说web配置不存在吗? – oleksii 2011-05-07 07:21:55
问题是它不被支持。 ASP.NET是一个不同的CLR主机,它有不同的规则。 – 2011-05-07 09:44:09
我有同样的问题。 属性不会帮助您将app.config复制到需要的位置。比如你什么时候做整合单元测试。然后,你可以有两种选择:
使用后生成事件
复制/ Y“$(PROJECTDIR)的App.config”“.... \测试\调试\ $(TargetFileName)。配置”
手动配置文件部分从libA.dll复制到libA.Test.dll
我最终使用2,因为它被证明是更健壮的我。
将dll项目中的app.config重命名为[dllname] .dll.config。将相同文件的属性更改为“始终复制”并重建。对我很好。我也尝试通过VS中的Settings对话框添加另一个设置,即使它不是app.config,它也会更新。顺便说一句,使用VS2013更新3.
做类似的事情的另一种方法是创建一个硬链接文件与项目文件夹中的[dllname] .dll.config并更改其属性,以“永远复制”的方式你仍然有你的app.config正常,但如果你更新它,它也会更新你的[dllname] .dll.config文件。唯一真正的警告是,当你检入像TFS这样的源代码控制时,它可能无法跟踪硬链接,并且你可能会意外地覆盖链接。但是,当您“添加和现有项目”作为链接时,它会再次确认链接,因此它可能会或可能不适合您的情况。你决定。
虽然我迟到了,但我的回答可以帮助别人。我使用以下命令作为预生成事件:
copy /Y $(SolutionDir)\[YOUR_LIBRARY_PROJECT]\app.config $(ProjectDir)$(OutputPath)[YOUR_LIBRARY_NAME].dll.config
我试图尽可能地保持动态,并且上述命令奏效。
有一个在下面的帖子一个更好的答案:
// Add this <ItemGroup> at the end of your .csproj file before </Project> and after <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<ItemGroup>
<Content Include="app.config">
<Link>$(TargetName).dll.config</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
我还没有尝试过这个,但是如果你想在缓慢猎豹的部署上转换文件,它似乎会出现问题。 – emragins 2017-03-22 23:35:22
- 1. [myproject] .dll.config文件 - 我需要它们吗?
- 2. 我们可以说再见复制构造函数吗?
- 3. makefile中的'tee',我们可以复制stderr吗?
- 4. 我们可以动画显示吗?
- 5. 我们可以在angularjs中制作自定义过滤器吗?
- 6. java - 我们可以做我们自己的内存管理吗?
- 7. 我们可以停止自动递增的ID列吗?
- 8. 我们可以使用watir自动化Silverlight屏幕吗?
- 9. 我们可以自动标记预定的构建吗?
- 10. 我们可以为自动标记系统集思广益吗?
- 11. 我们可以使DataTable在列上自动排序吗?
- 12. 可以复制/复制CCLayer吗?
- 13. 我可以自己制作网站吗?
- 14. Postgres-XL可以同时分片,复制和自动平衡吗?
- 15. 如何/我们可以在Cloudant中使用复制时应用“限制”吗?
- 16. 我可以自动实现类吗?
- 17. 我可以自动释放NSOperationQueue吗?
- 18. 我可以自动更换吗?
- 19. 松散耦合:当我们需要可复制参数时,我们可以使用接口吗?
- 20. 我们可以自己创建自定义sdk吗
- 21. 我们可以代表Java(或Kotlin)中的“自我类”吗?
- 22. SQL服务器服务 - 它们可以自动启动吗?
- 23. ReSharper:我可以制作自己的上下文动作吗?
- 24. Postgres:我们可以在复合键
- 25. DynamoDB:我们可以一起使用加密和跨区域复制吗?
- 26. 我们可以在两个操作系统之间复制postgres数据吗?
- 27. 我们可以在css3动画中移动背景图片吗?
- 28. 可以自动通知吗?
- 29. 我们可以用Java创建我们自己的日期格式吗?
- 30. 我们可以用我们自己的PHP代替PHP语言结构吗?
但这些选项是在当前的解决方案,以进入bin目录中的项目文件;而不是您可能使用Add Reference选项引用的外部dll。 – 2011-05-07 02:47:27