Can't find file 'System.Xml.Linq, Version=3.5.0.0'

Jan 19, 2010 at 9:07 PM

When trying out SVNXF, it returns a message saying that it couldn't find the file 'System.Xml.Linq, Version=3.5.0.0'.  Where does one obtain this file from?

Complete transcript is

--- START TRANSCRIPT

T:\Subversion\svnxf-1.0\svn>svnxf.exe --depth=infinity --path=file:///C:/Mysvn/Tags/Project1-A

Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'System.Xml.Linq, Version=3.5.0.0,
 Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified
.
File name: 'System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
   at svnxf.Program.Main(String[] args)

WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.

Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].

T:\Subversion\svnxf-1.0\svn>

--- END TRANSCRIPT

Jan 20, 2010 at 12:55 AM

Hi - Do you have .net 3.5 installed on your computer?

Jan 21, 2010 at 1:33 PM

I installed .net 3.5 and re-ran.  Now it fails with an unhandled exception (see transcript below).

Also, looking at this now, I'm not quite sure if this utility will accomplish what I was looking for.  If my understanding is correct, what is supposed to happen is that svnxf will go through an SVN URL and lock down externals that exist but for archiving I don't think this is quite what I would need.  If I have two projects (Project1, Project2) where Project2 has an external that points to Project1 and Project2 is the 'top' level, then what I would like to do is

- Have the external in Project2 that points to Project1 be always pointing to the head revision.  That way it is always pointing to the latest/greatest

- When I need to freeze Project2 at some point for a release, I'd like to create a tag for Project2 and then lock down the externals only for that tag.  Project2 will still evolve over time and have subsequent releases creating subsequent tags where the externals would again be locked down to whatever the current revision is.  That way if I need to recreate a particular release of Project2 I get it from the tag (which had its externals locked via some mechanism, svnxf presumably).

The way I understand svnxf now, it appears that when I run it, it will lock down the externals for Project2 as it recursively goes through the tag that points to Project2.  But the archiving behavior I'm looking for would instead instead be locking down the copy of Project2 that is referenced by the tag, not Project2 itself.  This is essentially what the Perl script svncopy.pl intends to do, but I haven't been able to get that script running either, nor found anyone that can fix it.  Is my understanding correct?

Kevin

-- Start of transcript for svnxf failure

T:\Subversion\svnxf-1.0\svn>svnxf --path=file:///C:/Mysvn/Project2
svnxf 1.0.0.0
[1/4]Searching path for external properties...

Unhandled Exception: System.Security.SecurityException: Request failed.
   at System.Security.CodeAccessSecurityEngine.ThrowSecurityException(Assembly asm, PermissionSet granted, PermissionSet
 refused, RuntimeMethodHandle rmh, SecurityAction action, Object demand, IPermission permThatFailed)
   at System.Security.CodeAccessSecurityEngine.ThrowSecurityException(Object assemblyOrString, PermissionSet granted, Pe
rmissionSet refused, RuntimeMethodHandle rmh, SecurityAction action, Object demand, IPermission permThatFailed)
   at System.Security.CodeAccessSecurityEngine.CheckSetHelper(PermissionSet grants, PermissionSet refused, PermissionSet
 demands, RuntimeMethodHandle rmh, Object assemblyOrString, SecurityAction action, Boolean throwException)
   at System.Security.CodeAccessSecurityEngine.CheckSetHelper(CompressedStack cs, PermissionSet grants, PermissionSet re
fused, PermissionSet demands, RuntimeMethodHandle rmh, Assembly asm, SecurityAction action)
   at svnxf.Utils.SvnCommand(String argument)
   at svnxf.Program.Main(String[] args)
The action that failed was:
LinkDemand
The type of the first permission that failed was:
System.Security.PermissionSet
The demand was for:
<PermissionSet
version="1"
Unrestricted="true"/>

The granted set of the failing assembly was:
<PermissionSet
version="1">
<IPermission
version="1"
Read="USERNAME"/>
<IPermission
version="1"
Unrestricted="true"/>
<IPermission
version="1"
Read="T:\Subversion\svnxf-1.0\svn\"
PathDiscovery="T:\Subversion\svnxf-1.0\svn\"/>
<IPermission
version="1"
Allowed="AssemblyIsolationByUser"
UserQuota="9223372036854775807"
Expiry="9223372036854775807"
Permanent="True"/>
<IPermission
version="1"
Flags="ReflectionEmit"/>
<IPermission
version="1"
Flags="Assertion, Execution, BindingRedirects"/>
<IPermission
version="1"
Unrestricted="true"/>
<IPermission
version="1"
Url="file:///T:/Subversion/svnxf-1.0/svn/svnxf.exe"/>
<IPermission
version="1"
Zone="Intranet"/>
<IPermission

version="1"
Unrestricted="true"/>
<IPermission
version="1"
Level="DefaultPrinting"/>
</PermissionSet>

The assembly or AppDomain that failed was:
svnxf, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
The Zone of the assembly that failed was:
Intranet
The Url of the assembly that failed was:
file:///T:/Subversion/svnxf-1.0/svn/svnxf.exe

T:\Subversion\svnxf-1.0\svn>

Jan 21, 2010 at 1:51 PM

Kevin,

svnxf was designed to do exactly what you describe.  I also could not get svncopy.pl to work which is why I made this utility.

This is what you currently have:

svnxf --path=file:///C:/Mysvn/Project2

Change to:

svnxf --depth=immediates --path=http://mydomain/Mysvn/tags  (freeze your already created tags instead of your trunk)

1. create your tag for project 2 as you normally would and then freeze the tags instead of freezing the trunk.  this utility is very flexible in that you can freeze any repository path including branches, tags, or any other folder you have.

2. Run svnxf with the above revised command line options.  These options specify to search your tags/projects folders for externals and 'freeze' them.

**the above should fix the exception error and provide the desired results.  You should also take a look at the batch file included with the download and try running the .bat with the test=true variable set.  this will make sure you can communicate properly with the repository before freezing anything.  If you have a repository that requires credentials I opted to use the svn cached credentials as I did not want to get into the project of security clear text passwords etc...

Please let me know if you need further assistance.