2009-04-14 4 views
0

У меня есть следующий клиентское приложение и соответствующий config файл:Почему моя кодовая база App.Config не помогает .NET найти мою сборку?

namespace Chapter9 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      AppDomain.CurrentDomain.ExecuteAssembly("AssemblyPrivate.exe"); 
     } 
    } 
} 

<configuration> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <codeBase href="file://C:\Users\djpiter\Documents\Visual Studio 2008\Projects\70536\AssemblyPrivate\bin\Debug\AssemblyPrivate.exe"/> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
</configuration> 

AssemblyPrivate.exe не имеет открытого ключа, а также не находится в GAC. Насколько мне известно, среда выполнения должна анализировать файл перед поиском сборки в каталоге клиентского приложения.

необработанное исключение (обернутые для удобства чтения) является:

Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 
'file:///C:\Users\djpiter\Documents\Visual Studio 2008\Projects\70536\Chapter9\bin\Debug\AssemblyPrivate.exe' 
or one of its dependencies. The system cannot find the file specified. 

Почему он не работает? Мне нужно использовать динамическое связывание (не статическое).

С наилучшими пожеланиями, PK

+0

Какова взаимосвязь между траекторией основного ехе и сборки (это в подпапке)? – stevehipwell

+0

Да. Он находится в подкаталоге. – pkolodziej

ответ

0

Не забывайте, что "или один из его зависимостей". Вы уверены, что все возможности AssemblyPrivate.exe доступны?

+0

AssemblyPrivate - это просто статичная основная пустота с Console.WriteLine so - Да, я уверен. – pkolodziej

+0

Вы пробовали использовать полный путь в качестве аргумента метода ExecuteAssembly? В стандартной форме Windows, а не как URL? –

+0

Codebase был введен не для жестких кодов любых путей. – pkolodziej

0

Вы, наверное, решили эту проблему самостоятельно сейчас, так что просто для справки:

Я считаю, что вам не хватает элемента «assemblyIdentity». Если вы укажете его дополнительно к элементу codeBase, он должен работать.

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="office" 
        publicKeyToken="71e9bce111e9429c" /> 
     <codeBase href="Microsoft.Office.Interop.v11.dll" version="11.0.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 

См http://msdn.microsoft.com/en-us/library/b0yt6ck0%28v=VS.100%29.aspx

+0

Вопрос: «У AssemblyPrivate.exe' нет открытый ключ ", вот в чем проблема. – hypersw