My projects are version controlled by TFS (not Git unfortunately).
If I want to use Paket (for example for a paket install or paket add or paket update, then I have to manually check out all the files paket will touch (at least paket.dependencies, paket.lock, any paket.references and all project files).
Paket should be able to determine, if the files, which Paket touch are version controlled by TFS and check them automatically out, if they are not already checked out.
This is because TFS sets all files, which are not checked out as readonly and also will only detect changes on checked out files.
If the files aren't checked out, paket will fail. This also happens in the Visual Studio extension.
What about local workspaces with TFS? Is that an option for you?
Not yet currently, as we still run on TFS 2010
I don't think we can checkout in TFS (since we don't want to depend on a particular VCS) but what would happen if we remove the readonly flag in paket?
TFS 2010 gets its information, if a file was changed only by the fact, that it is checked out, not by the change itself. This was changed with TFS 2012 ant the local workspaces.
So TFS would not detect the change.

Exactly ;)
Do you see anything that we can do to improve your situation that does not involve programming against TFS?
OK, then FAKE FTW: https://gist.github.com/magicmonty/858066629b08c0e2e310
We still use TFS for version control, and having to check out everything and then check it back in is annoying and clutters the history and changelists with lots of unchanged files.
Having a hook that could be run before each file was opened/changed would be great.
If I could set the command using an environment var or in the dependencies
set paket_edit_cmd=tf vc edit $(path)
This would tell Paket to run the edit command before editing a file.
This would slow down paket, but hopefully result in a smaller changeset.
Ideally Paket would only edit files that needed to be changed.
The annoying things right now are binding redirects and content files -- which means a Paket install command may end up trying to change an app.config or a Bootstrap.css file that wasn't checked out, causing an error and aborting the command.
can you try using a TFS local workspace? They are much more ergonomic for this sort of thing.
@baronfel as per previous comment, that was introduced in TFS2012.
Ah, my apologies. I didn't read upthread.
Local workspaces work great, even when they are over 100000 items.
VS 2017 picks up Paket's changes and adds them to the changelist.
They make TFVC almost Git like.
Thanks! I'll try to contribute a little Paket-on-TFS tutorial, based on our experience of migrating from Nuget to Paket.
That would be greatly appreciated!