将VS项目文件的副本提供给另一个开发人员

时间:2016-09-29 09:03:45

标签: c# visual-studio

有人可以指出在Visual Studio中创建C#项目的一些最佳实践,我可以避免将副本发送给另一个开发人员而导致无法构建的问题,因为各种设置无法在另一台PC上运行。

例如,如果我在PC上包含对dll的引用,则其他开发人员必须重新执行该操作。

2 个答案:

答案 0 :(得分:2)

  1. 将您的解决方案存储在某些版本控制系统下,例如git。
  2. 从此存储中排除所有构建工件。构建工件是在构建过程中创建的任何文件,例如bin文件夹,obj文件夹等。您不希望将其存储在源代码管理下,并且您不希望将其分发给其他开发人员。
  3. 排除所有特定于用户的工件,例如.suo文件,用于存储给定解决方案的个人设置,Resharper工件等。
  4. 排除通过在解决方案文件夹中运行应用程序(如果有)创建的所有临时文件。
  5. 包括您引用的所有第三方库,这些库不是nuget包。将所有这些库存储在源代码管理下的解决方案文件夹中。
  6. 您可以包含或不包含nuget packages文件夹。 Visual Studio可以自行恢复这些包,但是有些人认为有一天某些包可能变得不可用,并且仍然希望将这些包存储在源代码管理下。这个决定取决于你。
  7. 有时你的项目有一些巨大的文件(图形,视频,音频)等等。通常不建议将这些文件存储在像git这样的版本控制系统中,因为每次进行任何更改时都必须存储一份副本。但是,git例如为这些文件(https://git-lfs.github.com/)提供了单独的存储空间,建议在这种情况下使用。
  8. 永远不要将您的解决方案复制并发送给其他开发人员,只使用源代码控制。使用其所有工件来回复制解决方案可能会导致许多问题。

答案 1 :(得分:1)

所以在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文件夹在构建之前重新创建。

非常棒 - 谢谢大家。