为什么 VS 2012 从我的目标目录中删除文件?
Why VS 2012 removes files from my destination directory?
我看过类似问题的答案,但我还是不明白这个...
我有将所有依赖项放入公共 BIN 目录的脚本,该目录位于所有项目目录之外。
- solution.snl
- BIN
- ProjectAFolder
- 项目B文件夹
所有项目都引用 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"。访问路径 '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>
有谁知道我怎么才能赢?
谢谢
我认为最好的办法是将第三方文件存储在单独的目录中,例如一个库目录。
然后您可以将它们复制到您的 bin 目录中,作为预构建事件的一部分?
这是你的问题:
"All projects reference everything from BIN and they build into BIN. "
关于如何构建的想法应归入 "it was a good idea at the time and might have worked for another build platform but it's not so good now" 类别。
前面的 comments/answers 有点正确 - 您不应将资源或依赖类型文件存储在作为构建目标的文件夹中 - MSBuild 做的第一件事是清除目标文件夹,准备好接收构建结果。
依赖文件可以存储在任何你喜欢的地方。您可以将它们作为 link1 添加到项目中,然后将它们的 Build Action
设置为 Content 和 Copy to Output Directory
到 始终复制 或 如果较新则复制 。
1 添加 -> 现有项目,浏览并select依赖文件,然后下拉添加按钮并选择 添加为 link
我看过类似问题的答案,但我还是不明白这个... 我有将所有依赖项放入公共 BIN 目录的脚本,该目录位于所有项目目录之外。
- solution.snl
- BIN
- ProjectAFolder
- 项目B文件夹
所有项目都引用 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"。访问路径 '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>
有谁知道我怎么才能赢?
谢谢
我认为最好的办法是将第三方文件存储在单独的目录中,例如一个库目录。
然后您可以将它们复制到您的 bin 目录中,作为预构建事件的一部分?
这是你的问题:
"All projects reference everything from BIN and they build into BIN. "
关于如何构建的想法应归入 "it was a good idea at the time and might have worked for another build platform but it's not so good now" 类别。
前面的 comments/answers 有点正确 - 您不应将资源或依赖类型文件存储在作为构建目标的文件夹中 - MSBuild 做的第一件事是清除目标文件夹,准备好接收构建结果。
依赖文件可以存储在任何你喜欢的地方。您可以将它们作为 link1 添加到项目中,然后将它们的 Build Action
设置为 Content 和 Copy to Output Directory
到 始终复制 或 如果较新则复制 。
1 添加 -> 现有项目,浏览并select依赖文件,然后下拉添加按钮并选择 添加为 link