首页 文章

.gitignore for Visual Studio项目和解决方案

提问于
浏览
1056

将Git与Visual Studio Solutions( .sln )和项目结合使用时,我应该在 .gitignore 中包含哪些文件?

18 回答

  • 6

    查看官方GitHub的"Collection of useful .gitignore templates" .

    可以在此处找到Visual Studio的 .gitignore
    https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

  • 6

    为构建部署添加了InstallShield忽略 . InstallShield是Microsoft领导Visual Studio Installer的新方向,因此我们已开始在所有新项目中使用它 . 此添加的行将删除SingleImage安装文件 . 其他InstallShield类型可能包括DVD分发等 . 您可能希望添加这些目录名称或仅添加[Ee] xpress /以防止任何InstallShield LE部署文件进入仓库 .

    以下是使用Install Shield LE和安装程序的SingleImage部署的VS2010 C#项目的.gitignore:

    #OS junk files
    [Tt]humbs.db
    *.DS_Store
    
    #Visual Studio files
    *.[Oo]bj
    *.exe
    *.pdb
    *.user
    *.aps
    *.pch
    *.vspscc
    *.vssscc
    *_i.c
    *_p.c
    *.ncb
    *.suo
    *.tlb
    *.tlh
    *.bak
    *.[Cc]ache
    *.ilk
    *.log
    *.lib
    *.sbr
    *.sdf
    ipch/
    obj/
    [Bb]in
    [Dd]ebug*/
    [Rr]elease*/
    Ankh.NoLoad
    
    #InstallShield
    [Ss]ingle[Ii]mage/
    [Dd][Vv][Dd]-5/
    [Ii]nterm/
    
    #Tooling
    _ReSharper*/
    *.resharper
    [Tt]est[Rr]esult*
    
    #Project files
    [Bb]uild/
    
    #Subversion files
    .svn
    
    # Office Temp Files
    ~$*
    
  • 45

    这是我正在研究的最近项目中 .gitignore 的摘录 . 我是一个跨平台的项目,因此对于其他构建系统生成的文件有各种其他忽略规则,我不能保证我将它们完全分开 .

    *.dll
    *.exe
    *.exp
    *.ilk
    *.lib
    *.ncb
    *.log
    *.pdb
    *.vcproj.*.user
    [Dd]ebug
    [Rr]elease
    

    也许这个问题应该是社区Wiki,所以我们可以一起编辑一个主列表,其中包含关于哪些类型的项目应该忽略哪些文件的注释?

  • 108

    这是我的 .gitignore 文件的what I use in my .NET Projects .

    [Oo]bj/
    [Bb]in/
    *.suo
    *.user
    /TestResults
    *.vspscc
    *.vssscc
    

    这几乎是所有MS方法,它使用内置的Visual Studio测试程序,以及可能在其中具有一些TFS绑定的项目 .

  • 6

    虽然您应该保留NuGet packages.config文件,但应该排除packages文件夹:

    #NuGet
    packages/
    

    我通常不会在源代码管理中存储二进制文件或从我的源代码生成的任何内容 . 然而,对此有不同的意见 . 如果它使您的构建系统更容易,那就去做吧!但是,我认为你没有对这些依赖项进行版本控制,因此它们只占用存储库中的空间 . 在我看来,将二进制文件存储在一个中心位置,然后依赖packages.config文件来指示需要哪个版本是一个更好的解决方案 .

  • 6

    我知道这是一个旧线程但是对于访问此页面的新老网站,有一个名为gitignore.io的网站可以生成这些文件 . 在登陆网站时搜索"visualstudio"它将为您生成这些文件,您也可以将多个语言/ ides忽略连接到一个文档中的文件 .

    美丽 .

  • 3

    晚到这里聚会,但我也发现我使用以下内容 . 有些可能仅用于在推送到公共远程时隐藏敏感文件 .

    #Ignore email files delivered to specified pickup directory
    *.eml
    
    #Allow NuGet.exe (do not ignore)
    !NuGet.exe
    
    #Ignore WebDeploy publish profiles
    *.Publish.xml
    
    #Ignore Azure build csdef & Pubxml files
    ServiceDefinition.build.csdef
    *.azurePubxml
    
    #Allow ReSharper .DotSettings (for non-namespace-provider properties)
    !*.csproj.DotSettings
    
    #Ignore private folder
    /Private/
    
  • 221

    如果您在解决方案中使用dbproj,则需要添加以下内容:

    #Visual Studio DB Project
    *.dbmdl
    [Ss]ql/
    

    资料来源:http://blogs.msdn.com/b/bahill/archive/2009/07/31/come-visit-revisit-the-beer-house-continuous-integration.aspx

  • 3

    在Visual Studio 2015 Update 3上,并且今天(2016-10-24)更新了Git扩展,Visual Studio生成的 .gitignore 是:

    ## Ignore Visual Studio temporary files, build results, and
    ## files generated by popular Visual Studio add-ons.
    
    # User-specific files
    *.suo
    *.user
    *.userosscache
    *.sln.docstates
    
    # User-specific files (MonoDevelop/Xamarin Studio)
    *.userprefs
    
    # Build results
    [Dd]ebug/
    [Dd]ebugPublic/
    [Rr]elease/
    [Rr]eleases/
    [Xx]64/
    [Xx]86/
    [Bb]uild/
    bld/
    [Bb]in/
    [Oo]bj/
    
    # Visual Studio 2015 cache/options directory
    .vs/
    # Uncomment if you have tasks that create the project's static files in wwwroot
    #wwwroot/
    
    # MSTest test Results
    [Tt]est[Rr]esult*/
    [Bb]uild[Ll]og.*
    
    # NUNIT
    *.VisualState.xml
    TestResult.xml
    
    # Build Results of an ATL Project
    [Dd]ebugPS/
    [Rr]eleasePS/
    dlldata.c
    
    # DNX
    project.lock.json
    artifacts/
    
    *_i.c
    *_p.c
    *_i.h
    *.ilk
    *.meta
    *.obj
    *.pch
    *.pdb
    *.pgc
    *.pgd
    *.rsp
    *.sbr
    *.tlb
    *.tli
    *.tlh
    *.tmp
    *.tmp_proj
    *.log
    *.vspscc
    *.vssscc
    .builds
    *.pidb
    *.svclog
    *.scc
    
    # Chutzpah Test files
    _Chutzpah*
    
    # Visual C++ cache files
    ipch/
    *.aps
    *.ncb
    *.opendb
    *.opensdf
    *.sdf
    *.cachefile
    *.VC.db
    
    # Visual Studio profiler
    *.psess
    *.vsp
    *.vspx
    *.sap
    
    # TFS 2012 Local Workspace
    $tf/
    
    # Guidance Automation Toolkit
    *.gpState
    
    # ReSharper is a .NET coding add-in
    _ReSharper*/
    *.[Rr]e[Ss]harper
    *.DotSettings.user
    
    # JustCode is a .NET coding add-in
    .JustCode
    
    # TeamCity is a build add-in
    _TeamCity*
    
    # DotCover is a Code Coverage Tool
    *.dotCover
    
    # NCrunch
    _NCrunch_*
    .*crunch*.local.xml
    nCrunchTemp_*
    
    # MightyMoose
    *.mm.*
    AutoTest.Net/
    
    # Web workbench (sass)
    .sass-cache/
    
    # Installshield output folder
    [Ee]xpress/
    
    # DocProject is a documentation generator add-in
    DocProject/buildhelp/
    DocProject/Help/*.HxT
    DocProject/Help/*.HxC
    DocProject/Help/*.hhc
    DocProject/Help/*.hhk
    DocProject/Help/*.hhp
    DocProject/Help/Html2
    DocProject/Help/html
    
    # Click-Once directory
    publish/
    
    # Publish Web Output
    *.[Pp]ublish.xml
    *.azurePubxml
    
    # TODO: Un-comment the next line if you do not want to checkin 
    # your web deploy settings because they may include unencrypted
    # passwords
    #*.pubxml
    *.publishproj
    
    # NuGet Packages
    *.nupkg
    # The packages folder can be ignored because of Package Restore
    **/packages/*
    # except build/, which is used as an MSBuild target.
    !**/packages/build/
    # Uncomment if necessary however generally it will be regenerated when needed
    #!**/packages/repositories.config
    # NuGet v3's project.json files produces more ignoreable files
    *.nuget.props
    *.nuget.targets
    
    # Microsoft Azure Build Output
    csx/
    *.build.csdef
    
    # Microsoft Azure Emulator
    ecf/
    rcf/
    
    # Microsoft Azure ApplicationInsights config file
    ApplicationInsights.config
    
    # Windows Store app package directory
    AppPackages/
    BundleArtifacts/
    
    # Visual Studio cache files
    # files ending in .cache can be ignored
    *.[Cc]ache
    # but keep track of directories ending in .cache
    !*.[Cc]ache/
    
    # Others
    ClientBin/
    [Ss]tyle[Cc]op.*
    ~$*
    *~
    *.dbmdl
    *.dbproj.schemaview
    *.pfx
    *.publishsettings
    node_modules/
    orleans.codegen.cs
    
    # RIA/Silverlight projects
    Generated_Code/
    
    # Backup & report files from converting an old project file
    # to a newer Visual Studio version. Backup files are not needed,
    # because we have git ;-)
    _UpgradeReport_Files/
    Backup*/
    UpgradeLog*.XML
    UpgradeLog*.htm
    
    # SQL Server files
    *.mdf
    *.ldf
    
    # Business Intelligence projects
    *.rdl.data
    *.bim.layout
    *.bim_*.settings
    
    # Microsoft Fakes
    FakesAssemblies/
    
    # GhostDoc plugin setting file
    *.GhostDoc.xml
    
    # Node.js Tools for Visual Studio
    .ntvs_analysis.dat
    
    # Visual Studio 6 build log
    *.plg
    
    # Visual Studio 6 workspace options file
    *.opt
    
    # Visual Studio LightSwitch build output
    **/*.HTMLClient/GeneratedArtifacts
    **/*.DesktopClient/GeneratedArtifacts
    **/*.DesktopClient/ModelManifest.xml
    **/*.Server/GeneratedArtifacts
    **/*.Server/ModelManifest.xml
    _Pvt_Extensions
    
    # LightSwitch generated files
    GeneratedArtifacts/
    ModelManifest.xml
    
    # Paket dependency manager
    .paket/paket.exe
    
    # FAKE - F# Make
    .fake/
    
  • 10

    正如另一张海报所提到的,Visual Studio将其作为其.gitignore的一部分生成(至少对于MVC 4):

    # SQL Server files
    App_Data/*.mdf
    App_Data/*.ldf
    

    由于您的项目可能是您的解决方案的子文件夹,并且.gitignore文件存储在解决方案根目录中,因此实际上不会触及本地数据库文件(Git在 projectfolder/App_Data/*.mdf 处看到它们) . 为了解释这一点,我改变了这样的行:

    # SQL Server files
    *App_Data/*.mdf
    *App_Data/*.ldf
    
  • 4

    我在C#项目中使用以下.gitignore . 在需要时添加其他模式 .

    [Oo]bj
    [Bb]in
    *.user
    *.suo
    *.[Cc]ache
    *.bak
    *.ncb
    *.log 
    *.DS_Store
    [Tt]humbs.db 
    _ReSharper.*
    *.resharper
    Ankh.NoLoad
    
  • 6

    对于那些对 Microsoft 认为应该包含在gitignore中的人感兴趣,这里是 Visual Studio 2013 RTM 在创建新的Git-Repository时自动生成的默认值:

    ## Ignore Visual Studio temporary files, build results, and
    ## files generated by popular Visual Studio add-ons.
    
    # User-specific files
    *.suo
    *.user
    *.sln.docstates
    
    # Build results
    
    [Dd]ebug/
    [Rr]elease/
    x64/
    build/
    [Bb]in/
    [Oo]bj/
    
    # Enable "build/" folder in the NuGet Packages folder since NuGet packages use it for MSBuild targets
    !packages/*/build/
    
    # MSTest test Results
    [Tt]est[Rr]esult*/
    [Bb]uild[Ll]og.*
    
    *_i.c
    *_p.c
    *.ilk
    *.meta
    *.obj
    *.pch
    *.pdb
    *.pgc
    *.pgd
    *.rsp
    *.sbr
    *.tlb
    *.tli
    *.tlh
    *.tmp
    *.tmp_proj
    *.log
    *.vspscc
    *.vssscc
    .builds
    *.pidb
    *.log
    *.scc
    
    # Visual C++ cache files
    ipch/
    *.aps
    *.ncb
    *.opensdf
    *.sdf
    *.cachefile
    
    # Visual Studio profiler
    *.psess
    *.vsp
    *.vspx
    
    # Guidance Automation Toolkit
    *.gpState
    
    # ReSharper is a .NET coding add-in
    _ReSharper*/
    *.[Rr]e[Ss]harper
    
    # TeamCity is a build add-in
    _TeamCity*
    
    # DotCover is a Code Coverage Tool
    *.dotCover
    
    # NCrunch
    *.ncrunch*
    .*crunch*.local.xml
    
    # Installshield output folder
    [Ee]xpress/
    
    # DocProject is a documentation generator add-in
    DocProject/buildhelp/
    DocProject/Help/*.HxT
    DocProject/Help/*.HxC
    DocProject/Help/*.hhc
    DocProject/Help/*.hhk
    DocProject/Help/*.hhp
    DocProject/Help/Html2
    DocProject/Help/html
    
    # Click-Once directory
    publish/
    
    # Publish Web Output
    *.Publish.xml
    
    # NuGet Packages Directory
    ## TODO: If you have NuGet Package Restore enabled, uncomment the next line
    #packages/
    
    # Windows Azure Build Output
    csx
    *.build.csdef
    
    # Windows Store app package directory
    AppPackages/
    
    # Others
    sql/
    *.Cache
    ClientBin/
    [Ss]tyle[Cc]op.*
    ~$*
    *~
    *.dbmdl
    *.[Pp]ublish.xml
    *.pfx
    *.publishsettings
    
    # RIA/Silverlight projects
    Generated_Code/
    
    # Backup & report files from converting an old project file to a newer
    # Visual Studio version. Backup files are not needed, because we have git ;-)
    _UpgradeReport_Files/
    Backup*/
    UpgradeLog*.XML
    UpgradeLog*.htm
    
    # SQL Server files
    App_Data/*.mdf
    App_Data/*.ldf
    
    
    #LightSwitch generated files
    GeneratedArtifacts/
    _Pvt_Extensions/
    ModelManifest.xml
    
    # =========================
    # Windows detritus
    # =========================
    
    # Windows image file caches
    Thumbs.db
    ehthumbs.db
    
    # Folder config file
    Desktop.ini
    
    # Recycle Bin used on file shares
    $RECYCLE.BIN/
    
    # Mac desktop service store files
    .DS_Store
    

    见:Add a default .gitignore file on MSDN

  • 0

    Visual Studio中有 shortcut ,因为它在2015年或更高版本中支持开箱即用的Git . 对于新解决方案(或某些没有 .git 文件夹),请使用 Solution Explorer 中的源控制功能:

    Right-click 在您的解决方案上,然后在弹出菜单中选择 Add Solution to Source Control... 项目 .

    它会自动初始化 .git 存储库,将 .gitignore 与必要的东西添加到您的解决方案甚至 .gitattributes 文件(行结尾等) .

    该文本将出现在VS控制台中:

    A new Git repository has been created for you in C:\<path to your solution>
    Commit ______ created locally in repository.
    

    完成!

  • 9

    有一个在线工具,允许您根据您的操作系统,IDE,语言等生成.gitignore文件 . 看看http://www.gitignore.io/ .

    enter image description here

    2014年8月20日,这是为Visual Studio Windows生成的文件 .

    # Created by http://www.gitignore.io
    
    ### VisualStudio ###
    ## Ignore Visual Studio temporary files, build results, and
    ## files generated by popular Visual Studio add-ons.
    
    # User-specific files
    *.suo
    *.user
    *.sln.docstates
    
    # Build results
    [Dd]ebug/
    [Dd]ebugPublic/
    [Rr]elease/
    [Rr]eleases/
    x64/
    x86/
    build/
    bld/
    [Bb]in/
    [Oo]bj/
    
    # Roslyn cache directories
    *.ide/
    
    # MSTest test Results
    [Tt]est[Rr]esult*/
    [Bb]uild[Ll]og.*
    
    #NUNIT
    *.VisualState.xml
    TestResult.xml
    
    # Build Results of an ATL Project
    [Dd]ebugPS/
    [Rr]eleasePS/
    dlldata.c
    
    *_i.c
    *_p.c
    *_i.h
    *.ilk
    *.meta
    *.obj
    *.pch
    *.pdb
    *.pgc
    *.pgd
    *.rsp
    *.sbr
    *.tlb
    *.tli
    *.tlh
    *.tmp
    *.tmp_proj
    *.log
    *.vspscc
    *.vssscc
    .builds
    *.pidb
    *.svclog
    *.scc
    
    # Chutzpah Test files
    _Chutzpah*
    
    # Visual C++ cache files
    ipch/
    *.aps
    *.ncb
    *.opensdf
    *.sdf
    *.cachefile
    
    # Visual Studio profiler
    *.psess
    *.vsp
    *.vspx
    
    # TFS 2012 Local Workspace
    $tf/
    
    # Guidance Automation Toolkit
    *.gpState
    
    # ReSharper is a .NET coding add-in
    _ReSharper*/
    *.[Rr]e[Ss]harper
    *.DotSettings.user
    
    # JustCode is a .NET coding addin-in
    .JustCode
    
    # TeamCity is a build add-in
    _TeamCity*
    
    # DotCover is a Code Coverage Tool
    *.dotCover
    
    # NCrunch
    _NCrunch_*
    .*crunch*.local.xml
    
    # MightyMoose
    *.mm.*
    AutoTest.Net/
    
    # Web workbench (sass)
    .sass-cache/
    
    # Installshield output folder
    [Ee]xpress/
    
    # DocProject is a documentation generator add-in
    DocProject/buildhelp/
    DocProject/Help/*.HxT
    DocProject/Help/*.HxC
    DocProject/Help/*.hhc
    DocProject/Help/*.hhk
    DocProject/Help/*.hhp
    DocProject/Help/Html2
    DocProject/Help/html
    
    # Click-Once directory
    publish/
    
    # Publish Web Output
    *.[Pp]ublish.xml
    *.azurePubxml
    # TODO: Comment the next line if you want to checkin your web deploy settings 
    # but database connection strings (with potential passwords) will be unencrypted
    *.pubxml
    *.publishproj
    
    # NuGet Packages
    *.nupkg
    # The packages folder can be ignored because of Package Restore
    **/packages/*
    # except build/, which is used as an MSBuild target.
    !**/packages/build/
    # If using the old MSBuild-Integrated Package Restore, uncomment this:
    #!**/packages/repositories.config
    
    # Windows Azure Build Output
    csx/
    *.build.csdef
    
    # Windows Store app package directory
    AppPackages/
    
    # Others
    sql/
    *.Cache
    ClientBin/
    [Ss]tyle[Cc]op.*
    ~$*
    *~
    *.dbmdl
    *.dbproj.schemaview
    *.pfx
    *.publishsettings
    node_modules/
    
    # RIA/Silverlight projects
    Generated_Code/
    
    # Backup & report files from converting an old project file
    # to a newer Visual Studio version. Backup files are not needed,
    # because we have git ;-)
    _UpgradeReport_Files/
    Backup*/
    UpgradeLog*.XML
    UpgradeLog*.htm
    
    # SQL Server files
    *.mdf
    *.ldf
    
    # Business Intelligence projects
    *.rdl.data
    *.bim.layout
    *.bim_*.settings
    
    # Microsoft Fakes
    FakesAssemblies/
    
    
    ### Windows ###
    # Windows image file caches
    Thumbs.db
    ehthumbs.db
    
    # Folder config file
    Desktop.ini
    
    # Recycle Bin used on file shares
    $RECYCLE.BIN/
    
    # Windows Installer files
    *.cab
    *.msi
    *.msm
    *.msp
    
  • 37

    我知道这是一个老问题,仍在分享信息 . 在Visual Studio 2017中,您只需右键单击解决方案文件并选择 Add solution to source control

    这会将两个文件添加到源文件夹中 .

    • .gitattributes

    • .gitignore

    这是我猜的最简单的方法 .

  • 16

    我更喜欢根据需要排除事物 . 您不希望使用名称中的字符串"bin"或"obj"来剔除所有内容 . 至少一定要跟随斜线 .

    这是我在VS2010项目中开始的内容:

    bin/
    obj/
    *.suo
    *.user
    

    只是因为我使用ReSharper,这也是:

    _ReSharper*
    
  • 539

    感谢Jens Lehmann for this one - 如果您将源目录与编译器项目文件和构建输出分开,则可以通过否定它来简化.gitignore:

    path/to/build/directory/*
    !*.sln
    !*.vcproj
    

    您没有说出您正在使用的语言,但上述内容适用于C项目 .

  • 5

    在Visual Studio 2015团队资源管理器>本地Git存储库>项目>设置> Git>存储库设置>忽略和属性文件中 . 默认情况下,您可以在visual studio解决方案中添加带有项目的.gitignore文件 .

相关问题