我已经看到了类似问题的答案,但我仍然不明白这一点...... 我有脚本将所有依赖项放在一个公共BIN目录中,该目录位于所有项目目录之外。
所有项目都引用BIN中的所有项目,并将它们构建到BIN中。这种方式构建速度更快,避免了大量混乱,其中包括许多其他好处。 但为什么哎呀VS从bin中删除了一些未引用的文件?!我有一个引用其他文件的ThirdParty.dll(所以dll必须与ThirdParty.dll在同一个文件夹中)。当我重建这些其他文件被删除!真是个好主意!或者这是一个错误?
如果我将文件设为只读,我的构建会抱怨: 43> C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets(3969,5):警告MSB3061:无法删除文件" C:\ Projects \ GITBranches \ trunk1 \ EDA \ BIN \ tibrv.dll&#34 ;.访问路径' C:\ Projects \ GITBranches \ trunk1 \ EDA \ bin \ tibrv.dll'被拒绝。
这是Microsoft.Common.targets中尝试执行此操作的行:
<!-- Delete the orphaned files. -->
<Delete
Files="@(_CleanOrphanFileWritesInIntermediate);@(_CleanOrphanFileWritesInOutput)"
TreatErrorsAsWarnings="true">
<Output TaskParameter="DeletedFiles" ItemName="_CleanOrphanFilesDeleted"/>
</Delete>
有谁知道我怎么能赢?
谢谢
答案 0 :(得分:0)
我认为最好的办法是将第三方文件存储在一个单独的目录中,例如:一个Lib目录。
那么您可以将它们作为预构建事件的一部分复制到bin目录中吗?
答案 1 :(得分:0)
这是你的问题:
“所有项目都引用了BIN中的所有项目,并将它们构建到BIN中。”
关于如何进行构建的这个想法应该被委托给“当时这是一个好主意,并且可能适用于另一个构建平台,但它现在不是很好”类别。< / p>
以前的评论/答案有点正确 - 你不应该将资源或依赖类型文件存储在构建目标的文件夹中 - MSBuild做的第一件事是清理目标文件夹,准备接收结果构建。
依赖文件可以存储在您喜欢的任何地方。您可以将它们作为链接 1 添加到项目中,然后将Build Action
设置为内容,将Copy to Output Directory
设置为始终复制< / em>或如果更新,则复制。
1 添加 - &gt; 现有项目,浏览并选择相关文件,然后下拉添加按钮并选择添加为链接