2013-11-29 4 views
1

Я пытаюсь сделать веб-страницу, где вы можете просматривать папки. я сделал это в отдельное решение, и все это работает, но когда я пытался интегрировать его в растворе с более одного проекта, который также ссылающегося PostSharp я получаю эту ошибку:System.IO.FileNotFoundException: Не удалось загрузить файл или сборку. Система не может найти файл SharpSvn.dll

Unhandled exception (2.1.7.1, 32 bit, CLR 4.0, Release): System.IO.FileNotFoundException: Could not load file or assembly 'file:///C:\_projects\...\Libraries\SharpSvn\SharpSvn.dll' or one of its dependencies. The system cannot find the file specified. 
    File name: 'file:///C:\_projects\...\Libraries\SharpSvn\SharpSvn.dll' 

     at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) 
     at System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) 
     at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection, Boolean suppressSecurityChecks) 
     at System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean forIntrospection, Boolean suppressSecurityChecks, StackCrawlMark& stackMark) 
     at System.Reflection.Assembly.ReflectionOnlyLoadFrom(String assemblyFile) 
     at PostSharp.Sdk.CodeModel.ModuleDeclaration.GetSystemModule() 
     at PostSharp.Sdk.CodeModel.Domain.LoadAssembly(Assembly reflectionAssembly, Boolean lazyLoading) 
     at PostSharp.Sdk.CodeModel.Domain.GetAssembly(IAssemblyName assemblyName, BindingOptions bindingOptions) 
     at PostSharp.Sdk.CodeModel.AssemblyRefDeclaration.GetAssemblyEnvelope() 
     at PostSharp.Sdk.Extensibility.Tasks.MulticastAttributeTask.^SgrhoGlQ(AssemblyRefDeclaration _0) 
     at PostSharp.Sdk.Extensibility.Tasks.MulticastAttributeTask.^+GwnKh4ZYHu3() 
     at PostSharp.Sdk.Extensibility.Tasks.MulticastAttributeTask.Execute() 
     at PostSharp.Sdk.Extensibility.Project.ExecutePhase(String phase) 
     at PostSharp.Sdk.Extensibility.Project.Execute() 
     at PostSharp.Hosting.PostSharpObject.ExecuteProjects() 
     at PostSharp.Hosting.PostSharpObject.InvokeProject(ProjectInvocation projectInvocation) 

    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]. 
+0

, когда я комментарий этого метода больше нет ошибки: статической силы SVN_SSL_Override (объект отправитель, SharpSvn.Security.SvnSslServerTrustEventArgs е) { e.AcceptedFailures = e.Failures; e.Save = true; } –

+0

Вы проверили целевую платформу обоих проектов одинаково? –

+2

Также убедитесь, что версия PostSharp, на которую делается ссылка, одинакова во всех ваших проектах. – ohiodoug

ответ

0

я писал: "когда я комментировать этот метод больше нет ошибки: статический недействительным SVN_SSL_Override (объект отправителя, SharpSvn.Security.SvnSslServerTrustEventArgs е) {e.AcceptedFailures = e.Failures; e.Save = истина;}"

не знаю почему, но возникла проблема, поэтому я удалил:

client.Authentication.Clear(); client.Authentication.SslServerTrustHandlers + = новый EventHandler (SVN_SSL_Override); client.Authentication.DefaultCredentials = new NetworkCredential ("", "");

и этот метод

статической силы SVN_SSL_Override (объект отправителя, SharpSvn.Security.SvnSslServerTrustEventArgs е) {e.AcceptedFailures = e.Failures; e.Save = true; } "

и просто добавлено:

client.Authentication.UserNamePasswordHandlers + = делегат (объект OBJ, SharpSvn.Security.SvnUserNamePasswordEventArgs арг) { args.UserName =" «; args.Password = ""; args.Save = истина; };

и теперь он работает.

0

Вполне возможно, что SharpSVN сборка не загружается, поскольку ссылается на пару родных DLL (SharpSvn-DB44-20-win32.dll и SharpSvn-Sasl21-23-win32.dll для 32-разрядной версии). Если они не находятся где-то в пути поиска системы, что обычно имеет место для ASP.NET, то SharpSVN, вероятно, не загрузится.

У меня был similar problem с одним из моих пакетов NuGet, не работающих на веб-сайтах MVC, потому что родные библиотеки DLL не загружались. Поместить их в папку bin веб-сайта было недостаточно, потому что папка bin не находится ни на пути поиска, ни в папке приложения.

Попробуйте добавить следующий метод для вашего класса приложения в Global.asax.cs файл и вызвать его из Application_Start():

public static void CheckAddBinPath() 
{ 
    // find path to 'bin' folder 
    var binPath = Path.Combine(new string[] { AppDomain.CurrentDomain.BaseDirectory, "bin" }); 
    // get current search path from environment 
    var path = Environment.GetEnvironmentVariable("PATH") ?? ""; 

    // add 'bin' folder to search path if not already present 
    if (!path.Split(Path.PathSeparator).Contains(binPath, StringComparer.CurrentCultureIgnoreCase)) 
    { 
     path = string.Join(Path.PathSeparator.ToString(), new string[] { path, binPath }); 
     Environment.SetEnvironmentVariable("PATH", path); 
    } 
} 

Это добавит папку bin к поисковой системе путь для только приложения, которые должны позволить SharpSvn к найдите локальные библиотеки DLL, на которые он опирается. Просто убедитесь, что файлы на самом деле там - вам, возможно, придется копировать их из дистрибутива SharpSvn, если это не так.

Конечно, я мог бы быть совершенно не знаком. Дайте мне знать в любом случае.

+0

попробует это и сообщит вам о результатах. –

+0

нет, все тот же ошибка. но, ty для справки –

Смежные вопросы