为什么Visual Studio在Azure DevOps的提交中排除BIN和OBJ文件夹
为什么Visual Studio在Azure DevOps的提交中排除BIN和OBJ文件夹
我想知道在使用Visual Studio或Git-Bash从Visual Studio编写的代码中,将代码提交到Azure DevOps的通用方法是什么。出现的问题是bin文件夹中包含许多在构建项目之前保存在源代码中的第三方dll文件。这些第三方dll文件对项目是必需的。然而,在提交到Azure DevOps后,bin和obj文件夹并不存在。这是由于.gitignore和.gitattribute文件的原因。目前,我已经删除了这两个文件并提交了bin文件夹。这两个文件的目的是什么?请有人提供解决方法。
为什么Visual Studio在Azure DevOps的checkin中排除BIN和OBJ文件夹?
有一些很好的答案已经提供了。我将为您提供一些关于如何处理第三方DLL(程序集)的想法。请记住,使用第三方库的理想/最佳方法是通过NuGet Feed / Packages。
对于某些情况,这些DLL在Nuget.org中可能不可用。在这种情况下,您可以按照以下步骤将引用添加到项目中:
1. 在项目中创建一个名为`lib`的文件夹。
2. 将DLL添加到该文件夹中。
3. 右键单击DLL->转到`属性`,然后将`BuildAction`更改为`None`,将`Copy to Output Directory`更改为`Do not copy`。
4. 最后,从`lib`文件夹中添加引用。
这样,当您将项目提交到任何版本控制时,`lib`文件夹也将被提交,构建过程中的引用也将从`lib`文件夹中获取。
请记住,不要使用bin/obj文件夹来引用DLL,并且绝不要检入bin和Obj文件夹。因为这些文件夹将在构建过程中自动生成。
在Azure DevOps的checkin过程中,为什么Visual Studio会排除BIN和OBJ文件夹呢?这个问题的出现原因是.gitignore文件的设计初衷是将某些文件从源代码控制中排除掉。例如,如果你的开发文件夹中有一个包含数据库连接字符串的文件,你肯定不希望将密码提交到源代码控制中。将二进制文件提交到代码仓库是一个不好的实践。你应该使用依赖管理系统(如Nuget、Chocolately、Maven、npm等)来指定和下载你的依赖项。如果按照现在的方式进行,你会在多个项目中检入多个副本,并且无法在一个地方进行管理。合理的依赖管理很可能是默认版本的.gitignore文件中排除某些文件夹的原因。此外,你还希望重新生成obj文件夹的所有内容。如果你有旧的副本,时间戳可能会出现异常。每次进行干净的构建意味着从一个全新的副本开始,没有任何编译产物。
解决方法是在.gitignore文件中添加相应的规则来排除BIN和OBJ文件夹。在Visual Studio的项目中,可以通过右键单击这些文件夹,选择"Exclude from project"来排除它们。这样,在进行checkin操作时,这些文件夹就不会被包含在源代码控制中了。
Visual Studio排除BIN和OBJ文件夹是因为这些文件夹中的内容不应该被纳入源代码控制,而是应该使用依赖管理系统进行管理。这样可以避免重复提交和编译产物的问题,并确保每次构建都是从干净的副本开始。通过在.gitignore文件中添加排除规则或在Visual Studio项目中手动排除这些文件夹,可以解决这个问题。
为什么Visual Studio在Azure DevOps的checkin中排除BIN和OBJ文件夹?
在Visual Studio中,bin和obj文件夹用于存储编译器生成的输出文件。由于这些输出文件是由编译器生成的,你不希望在源代码控制中跟踪它们。因此,.gitignore文件用于指定未跟踪的文件,而.gitattributes文件用于定义每个路径的属性。它们是Git的配置文件。
如果你的项目需要引用一些第三方dll文件,最好的方法是使用Nuget包引用,如果这些dll文件有对应的Nuget包可用。如果没有,你可以将它们放在bin或obj之外的文件夹中,以便在Git中跟踪它们。你不应该修改.gitignore文件来跟踪bin或obj文件夹。
解决方法是将第三方dll文件作为Nuget包引用,或者将其放在bin或obj之外的文件夹中以便进行跟踪。不要修改.gitignore文件。
代码示例:
# .gitignore
bin/
obj/
# .gitattributes
bin/ export-ignore
obj/ export-ignore
这样,bin和obj文件夹中的内容将被排除在Azure DevOps的checkin中,而不会被跟踪。