C# 将VS项目文件的副本提供给其他开发人员
有人能指出一些在VisualStudio中创建C#项目的最佳实践吗?在这里,我可以避免将副本发送给另一个开发人员而导致无法生成的问题,因为各种设置不能在另一台PC上工作 例如,如果我在我的电脑上包含一个对dll的引用,那么其他开发人员必须重新做这件事C# 将VS项目文件的副本提供给其他开发人员,c#,visual-studio,C#,Visual Studio,有人能指出一些在VisualStudio中创建C#项目的最佳实践吗?在这里,我可以避免将副本发送给另一个开发人员而导致无法生成的问题,因为各种设置不能在另一台PC上工作 例如,如果我在我的电脑上包含一个对dll的引用,那么其他开发人员必须重新做这件事 将解决方案存储在某些版本控制系统下,如git 从该存储中排除所有生成工件。构建工件是在构建过程中创建的任何文件,例如bin文件夹、obj文件夹等。您不想将其存储在源代码控制下,也不想将其分发给其他开发人员 排除所有特定于用户的工件,例如存储给定解决
所以在得到优秀人员对Stack Overflow的良好建议后(我喜欢这个网站)。我想我应该试试一个简单的测试。我在VS2015中快速开发了一款“hello world”控制台应用程序 执行了“全部保存”操作,以下是其中的文件:
C:.
│ ConsoleApplication8.sln
│
└───ConsoleApplication8
│ App.config
│ ConsoleApplication8.csproj
│ Program.cs
│
├───bin
│ └───Debug
│ ConsoleApplication8.exe.config
│ ConsoleApplication8.vshost.exe
│ ConsoleApplication8.vshost.exe.config
│ ConsoleApplication8.vshost.exe.manifest
│
├───obj
│ └───Debug
│ │ ConsoleApplication8.csproj.FileListAbsolute.txt
│ │ DesignTimeResolveAssemblyReferencesInput.cache
│ │ TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
│ │ TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
│ │ TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
│ │
│ └───TempPE
└───Properties
AssemblyInfo.cs
然后,我构建并运行了该项目,这些是之后的文件:
C:.
│ ConsoleApplication8.sln
│
└───ConsoleApplication8
│ App.config
│ ConsoleApplication8.csproj
│ Program.cs
│
├───bin
│ └───Debug
│ ConsoleApplication8.exe
│ ConsoleApplication8.exe.config
│ ConsoleApplication8.pdb
│ ConsoleApplication8.vshost.exe
│ ConsoleApplication8.vshost.exe.config
│ ConsoleApplication8.vshost.exe.manifest
│
├───obj
│ └───Debug
│ │ ConsoleApplication8.csproj.FileListAbsolute.txt
│ │ ConsoleApplication8.csprojResolveAssemblyReference.cache
│ │ ConsoleApplication8.exe
│ │ ConsoleApplication8.pdb
│ │ DesignTimeResolveAssemblyReferencesInput.cache
│ │ TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
│ │ TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
│ │ TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
│ │
│ └───TempPE
└───Properties
AssemblyInfo.cs
额外文件包括:
ConsoleApplication8\bin\Debug\ConsoleApplication8.exe
ConsoleApplication8\bin\Debug\ConsoleApplication8.pdb
ConsoleApplication8\obj\Debug\ConsoleApplication8.csprojResolveAssemblyReference.cache
ConsoleApplication8\obj\Debug\ConsoleApplication8.exe
ConsoleApplication8\obj\Debug\ConsoleApplication8.pdb
接下来,我删除了bin和obj文件夹并重新加载了解决方案。bin和obj文件夹已重新创建,与生成之前相同
精彩-谢谢大家。尝试设置内部软件包管理器,例如NuGet。这将有助于解决这个特殊问题。或者将dll放在源代码管理中,并按相对路径引用?@Graham您和其他开发人员之间缺少的是代码库。如果您熟悉GIT,请尝试一下,我确信您的代码将同步,除非有人不提交任何更改。必须将您使用的所有第三方库存储在visual studio解决方案文件夹中,并使用相对路径引用它们。当然,在可能的情况下,始终使用nuget包。当然,要使用源代码管理系统,不要复制任何东西。@Sherlock只是一个附带问题,我最近才开始使用C,我主要是一名Java/C++开发人员,所以在Java开发时,我们可以使用
.gitignore
忽略类
和构建
临时文件。我注意到C#没有设置忽略方案,建议只包含基本文件的方法是什么?@Evk实际上visual studio可以恢复丢失的包,但大多数情况下不依赖于此,这是一种不好的做法。通常情况下,第8点是对的。但我认为值得一提的是,解决方案的手动副本应该遵循与git存储库设置相同的逻辑(关于排除的文件)。可能有“项目完成后将最终源代码发送给客户机”这样的情况,其中基于版本控制的分发将是额外的工作。要做到这一点,一个干净的方法是定期使用版本控制进行开发,确保版本控制下的文件足够,并从版本控制当前状态导出一个干净的副本以供发布。可能,但手动排除所有这些文件并不是那么容易,因此,如果人们复制并通过,他们几乎总是会复制所有文件。