Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将VS项目文件的副本提供给其他开发人员_C#_Visual Studio - Fatal编程技术网

C# 将VS项目文件的副本提供给其他开发人员

C# 将VS项目文件的副本提供给其他开发人员,c#,visual-studio,C#,Visual Studio,有人能指出一些在VisualStudio中创建C#项目的最佳实践吗?在这里,我可以避免将副本发送给另一个开发人员而导致无法生成的问题,因为各种设置不能在另一台PC上工作 例如,如果我在我的电脑上包含一个对dll的引用,那么其他开发人员必须重新做这件事 将解决方案存储在某些版本控制系统下,如git 从该存储中排除所有生成工件。构建工件是在构建过程中创建的任何文件,例如bin文件夹、obj文件夹等。您不想将其存储在源代码控制下,也不想将其分发给其他开发人员 排除所有特定于用户的工件,例如存储给定解决

有人能指出一些在VisualStudio中创建C#项目的最佳实践吗?在这里,我可以避免将副本发送给另一个开发人员而导致无法生成的问题,因为各种设置不能在另一台PC上工作

例如,如果我在我的电脑上包含一个对dll的引用,那么其他开发人员必须重新做这件事

  • 将解决方案存储在某些版本控制系统下,如git
  • 从该存储中排除所有生成工件。构建工件是在构建过程中创建的任何文件,例如bin文件夹、obj文件夹等。您不想将其存储在源代码控制下,也不想将其分发给其他开发人员
  • 排除所有特定于用户的工件,例如存储给定解决方案的个人设置的.suo文件、Resharper工件等
  • 排除通过在解决方案文件夹(如果有)中运行应用程序创建的所有临时文件
  • 包括您引用的所有第三方库,这些库不是nuget软件包。将所有这些库存储在源代码管理下的解决方案文件夹中
  • 您可以包括或不包括nuget packages文件夹。VisualStudio可以自行恢复这些包,但有些人认为有一天某些包可能会变得不可用,并且更愿意在源代码控制下存储这些包。决定权在你
  • 有时你的项目有一些巨大的文件(图形、视频、音频)等等。通常不建议将此类文件存储在git之类的版本控制系统中,因为每次进行更改时,它们都必须存储副本。然而,例如git为这些文件()提供了单独的存储,在这种情况下建议使用
  • 永远不要复制您的解决方案并将其发送给其他开发人员,只能使用源代码管理。来回复制解决方案及其所有工件可能会导致许多问题

  • 所以在得到优秀人员对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存储库设置相同的逻辑(关于排除的文件)。可能有“项目完成后将最终源代码发送给客户机”这样的情况,其中基于版本控制的分发将是额外的工作。要做到这一点,一个干净的方法是定期使用版本控制进行开发,确保版本控制下的文件足够,并从版本控制当前状态导出一个干净的副本以供发布。可能,但手动排除所有这些文件并不是那么容易,因此,如果人们复制并通过,他们几乎总是会复制所有文件。