Can't configure git to ignore Visual Studio files - visual-studio-2010

I have set my .gitignore to ignore both .sdf files and .vcxproj but they still keep appearing at Git Extensions for me to commit them.
Specifically the *.sdf are causing tons of conflicts as it keeps being updated by vs10, and it prevents me from pulling to my other workstation. Uploading 32mb each time is just not possible.
Here is my .gitignore file:
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
*.sdf
*.sln
*.suo
# 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/
*.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/
*.ipch
ipch/atr tp-e6975b4b/atr tp-ffcb10b7.ipch
ATR TP.sdf
ATR TP/ATR TP.vcxproj
I am sorry if this question was already posted elsewhere, but I searched for a while and couldn't find a suitable answer.

Git Ignore only works on files that haven't already been added to source control already. You'll need to remove them manually and then they will be properly ignored.
How to stop tracking and ignore changes to a file in Git?

Related

Azure DevOps Build Task: create a zip with contents identical to Visual Studio Publish

In Visual Studio, when we publish to a folder, that folder contains exactly what we need to deploy.
In Azure Pipeline, the Build Solution task produces a a bunch of (to us) unnecessary files plus a zip file (nice!). The zip contains the files we need, but buried in an crazy deep folder path:
\Content\D_C\a\1\s\src\MyProject\obj\Release\Package\PackageTmp\our-files.dll
What we would prefer is:
\our-files.dll
It also modifies connectionStrings in the web.config to support the deploy script it ships with. We don't need that script and that modification is a pain (which we disabled by adding<AutoParameterizationWebConfigConnectionStrings>false</...> to the .csproj file - yuck!)` .
We tried fussing with the parameters in the Build Solution step:
/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\\"
Changing DeployOnBuild to false caused the $(build.artifactsstagingdirectory) to be empty (causing the next step to deploy nothing)
Changing WebPublishMethod to FileSystem made no difference (try finding documentation on the allowed values!)
Changing PackageAsSingleFile to false did what one would expect - no zip, but the contents were still buried in that deep folder structure.
Our downstream script could open the manifest file, xpath out the deep path baked into the zip (does the path always start with d_C?), unzip and grab the contents from there - but what a pain and how unnecessary.
Is there a way to publish just a nice clean build - a zip with contents that directly unpacks to the same files as a plain-jane Publish from Visual Studio does?
In the Visual Studio Build step change "MSBuild Arguments" to
/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\\" /p:UseWPP_CopyWebApplication=true /p:OutDir="$(build.artifactstagingdirectory)"
The key thing is /p:OutDir="$(build.artifactstagingdirectory)" resolves the directory issue and /p:UseWPP_CopyWebApplication=true removes web.config.release and web.config.debug
Then update Publish Build Artifacts step "Path to publish" to
$(build.artifactstagingdirectory)\_PublishedWebsites

Different results with MsBuild and Visual Studio

I have a solution, which consists out of 2 projects: regular class library for .NET 4.5 + website (not web application) project.
When I build this solution with Visual Studio - all referenced assemblies from Nuget packages and local references are copied to bin folder of website project.
If I try to build solution with MsBuild - bin folder of website project does not receive any assemblies.
Website project is not selected to be built in VS configuration (which is reported by message in both cases)
Edit - here is additional explanation.
When I clone a project from git - bin folder of website contains only 4 assemblies already checked in:
If I will run msbuild command with /t:Build or /t:Rebuild and /p:Configuration=Release;Platform="Any CPU" - I'll receive just an output of postbuild event in my other project, included in solution:
However, if I execute build from VS (Ctrl + Shift + b) in Release/Debug config - bin have all required assemblies for running web application.
Edit 2: Link to example solution - https://github.com/akuryan/csharp-website-test
When one builds it with msbuild TestApp.sln /t:Rebuild /p:Configuration=Release;Platform="Any CPU" - this results in only Test.Core.* and LetsEncrypt.Umbraco.dll (initially checked in) found at ~\Test.Web\bin\ (where Test.Web is website project). If one builds TestApp.sln with VisualStudion 2015 (I suppose, 2013 and 2017 will be the same) - ~\Test.Web\bin\ gets whole amount of assemblies.
Different results with MsBuild and Visual Studio
That because the all dll.refresh file in bin folder alongside the binary file are ignored by .gitignore.
Since Web Site projects do not have any project file (.csproj) to put the assembly references, the *.dll.refresh files are used by MSBuild to understand the assembly references. The contents of the file is the relative path to the .dll via the packages folder for the solution. When you ignore all those .dll.refresh by .gitignore, MSBuild could not understand how to handle the dll files.
To test this, I created a website project, add a nuget package to it, then delete the dll files but keep the .dll.refresh files in the bin folder. Build the website project by MSBuild command line:
msbuild.exe TestWebsite.sln /t:Rebuild
After this command complete, the dll files are copy to the bin folder.
So build and package restore to work it looks like you need to keep the .dll.refresh files in the bin folder. You can remove the other binaries from your version control system.
Note: If you want to get those .dll.refresh back, you can use the command line in the Package Manager Console:
update-package -reinstall
Hope this helps.

Why is GitHub sometimes ignoring my Visual Studio files?

I'm using two computers with Visual Studio Ultimate 2012 and the Github extension for it.
There are multiple solutions in the repository.
Sometimes after commiting, the sln, csproj, App.config and AssemblyInfo.cs files are missing in the repository.
I found them with the Git Gui program under "Unstaged Changes" and could add them.
I have to do this every time I add a new solution.
As far as I can see it, the .gitignore file is not responsible for this.
## 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
What is the reason for this behaviour and how can it be fixed?
Edit for additional information:
I'm only working on the master, there are no branches.
I tried it again.
Files untracked were:
$ git status -u
On branch master
Your branch is up-to-date with 'origin/master'.
Untracked files:
(use "git add <file>..." to include in what will be committed)
007 10001st prime/10001st prime/10001st prime.sln
007 10001st prime/10001st prime/10001st prime/10001st prime.csproj
007 10001st prime/10001st prime/10001st prime/App.config
007 10001st prime/10001st prime/10001st prime/Properties /AssemblyInfo.cs
The files ignored were:
$ git status --ignored
On branch master
Your branch is up-to-date with 'origin/master'.
Untracked files:
(use "git add <file>..." to include in what will be committed)
007 10001st prime/10001st prime/10001st prime.sln
007 10001st prime/10001st prime/10001st prime/10001st prime.csproj
007 10001st prime/10001st prime/10001st prime/App.config
007 10001st prime/10001st prime/10001st prime/Properties/
Ignored files:
(use "git add -f <file>..." to include in what will be committed)
005 Smallest multiple/Smallest multiple/Smallest multiple/Smallest multiple.v11.suo
005 Smallest multiple/Smallest multiple/Smallest multiple/bin/
005 Smallest multiple/Smallest multiple/Smallest multiple/obj/
006 Sum square difference/Sum square difference/Sum square difference.v11.suo
006 Sum square difference/Sum square difference/Sum square difference/bin/
006 Sum square difference/Sum square difference/Sum square difference/obj/
007 10001st prime/10001st prime/10001st prime.v11.suo
007 10001st prime/10001st prime/10001st prime/bin/
007 10001st prime/10001st prime/10001st prime/obj/
nothing added to commit but untracked files present (use "git add" to track)
It seems that they are not ignored, just untracked.
To really be sure those files are not ignored, double-check (when you see that case again) with
git check-ignore -v -- /path/to/missing/file.sln
That way, you will be sure no .gitignore is responsible.
Make sure you did not just switch from branches (as in this case)
Guy Lowe mentions in the comments:
I had this issue with new .cs files with the line *.user in my gitignore
It was because I had the word user in my folder structure.

devenv copies files from other project during incremental build

I have 3 projects; Project1.Web, Project1.Service and Project1.Common.
Both Project1.Web and Project1.Service have dependencies on Project1.Common.
If I rebuild the solution which contains all 3 projects; all works correctly.
If I change a file in Project1.Web; files are built to Project1.Web\bin - all works correctly.
If if change a file in Project1.Service files are built to Project1.Service\bin\Debug AND some are copied to Project1.Web\bin. The copied file is Project1.Common.dll, but Project1.Web.dll is not built (or copied).
The file modified in Project1.Service is not shared, its just modified to trigger an incremental build of Project1.Service.
Does anyone know why Visual Studio would be copying a build artifact to a a directory that is not part of the incremental build?
Currently this sequence of events leaves Project1.Web is a non-working state as Project1.Service and Project1.Web have dependencies on different versions of the same assembly via a third party assembly. If we decide to make a change to Project1.Service then it has the side-effect of breaking Project1.Web.
I've tried/checked the following:
There are no dependencies between Project1.Web and Project1.Service (either direction).
The file modified in Project1.Service is not shared; and there are no pre/post build events defined.
Executing msbuild on the Project1.Service.csproj project file does not have the same effect.
Denying write/create permission on the bin directory under Project1.Web does not cause the incremental build to fail.
No output is emitted in the detailed or diagnostic msbuild output that references Project1.Web (from within Visual Studio)
Using procmon, I can see that devenv is using mswebprj.dll (C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Packages\mswebprj.dll) - which invokes the copy of the file.

Mercurial .hgignore for Visual Studio 2013 projects

As a followup to my question on VS2012, are there any addition that should be made to the .hgignore file for VS2013? Below is the previous answer.
############################################################
## Visual Studio 2012
############################################################
syntax: glob
## User-specific files
*.suo
*.user
*.sln.docstates
## Build results
[Dd]ebug/
[Rr]elease/
x64/
build/
[Bb]in/
[Oo]bj/
## 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 Ignores
_ReSharper*/
*.[Rr]e[Ss]harper
## TeamCity Ignores
_TeamCity*
## DotCover Ignores
*.dotCover
## NCrunch Ignores
*.ncrunch*
.*crunch*.local.xml
## Installshield output folder
[Ee]xpress/
## DocProject Ignores
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 Ignores
publish/
## Publish Web Output
*.Publish.xml
*.pubxml
## Windows Azure Build Ignores
csx
*.build.csdef
## Windows Store Ignores
AppPackages/
## RIA/Silverlight projects
Generated_Code/
## SQL Server Ignores
App_Data/*.mdf
App_Data/*.ldf
## Backup & Report Files when converting a solution
## Not required, we have mercurial!
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
## NuGet
packages/
## Miscellaneous Ignores
sql/
*.Cache
ClientBin/
[Ss]tyle[Cc]op.*
~$*
*~
*.dbmdl
*.[Pp]ublish.xml
*.pfx
*.publishsettings
## Windows Ignores
$RECYCLE.BIN/
Thumbs.db
ehthumbs.db
Desktop.ini
By merging the .hgignore I use regularly (with VS 2013 Ultimate) and the .hgignore in your question I compiled the following:
############################################################
## Visual Studio 2013
############################################################
syntax: glob
## User-specific files
*.suo
*.user
*.sln.docstates
## Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
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 Ignores
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
## JustCode
.JustCode
## TeamCity Ignores
_TeamCity*
## DotCover Ignores
*.dotCover
## NCrunch Ignores
_NCrunch_*
*.ncrunch*
.*crunch*.local.xml
## MightyMoose
*.mm.*
AutoTest.Net/
## Web workbench (sass)
.sass-cache/
## Installshield output folder
[Ee]xpress/
## DocProject Ignores
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 Ignores
publish/
## Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
*.pubxml
## Windows Azure Build Ignores
csx/
*.build.csdef
## Windows Store Ignores
AppPackages/
## RIA/Silverlight projects
Generated_Code/
## SQL Server Ignores
App_Data/*.mdf
App_Data/*.ldf
## Backup & Report Files when converting a solution
## Not required, we have mercurial!
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
## NuGet
packages/
## Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
## Microsoft Fakes
FakesAssemblies/
*.favdoc
## Miscellaneous Ignores
sql/
*.Cache
ClientBin/
[Ss]tyle[Cc]op.*
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.pfx
*.publishsettings
node_modules/
## Windows Ignores
$RECYCLE.BIN/
Thumbs.db
ehthumbs.db
Desktop.ini
Besides additions for a couple popular plugins (e.g. JustCode and NUnit), it also has additions for BI projects, Fakes etcetera.
You can see all the detailed differences if you just save the listing in your question, save the listing in my answer, and diff the two of course.

Resources