2016-01-15 1 views
0

я это следующий класс Я пытаюсь сделать DLL изКак создать dll для одного класса, ссылающегося на другие dll в C# asp.net?

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using NRules.Fluent.Dsl; 
using NRule.site.Model; 
using NRule.site.Utilities; 

namespace NRule.site.Rules 
{ 
    public class AllowAtleastOneCountryRule : Rule 
    { 
     public override void Define() 
     { 
      FundProfile productProfile = null; 
      string str = RuleTexts.AllowAtleastOneCountryRule; 
      bool enabled = AllRules.GetDict()[str]; 

      When() 
       .Match<FundProfile>(() => productProfile) 
       .Exists<FundProfile>(p => enabled, p => RuleViolation(p)); 

      Then() 
       .Do(_ => productProfile.DisplayError(str)); 
     } 

     bool RuleViolation(FundProfile pp) 
     { 
      if (pp.CountriesListP.Count==0) 
       return true; 
      if (pp.CountriesListP.Any(c => c.Allowed)) 
       return false; 
      else 
       return true; 

     } 
    } 
} 

Как вы можете видеть, что есть внешние ссылки

using NRules.Fluent.Dsl; 

и некоторые другие классы, которые в иерархии

using NRule.site.Model; 
using NRule.site.Utilities; 

Когда я пробую команду csc, я получаю это

csc /target:library /out:Mylib.dll AllowAtLeastOneCountryRule.cs 
Microsoft (R) Visual C# Compiler version 4.0.30319.34209 
for Microsoft (R) .NET Framework 4.5 
Copyright (C) Microsoft Corporation. All rights reserved. 

AllowAtleastOneCountryRule.cs(5,7): error CS0246: The type or namespace name 
     'NRules' could not be found (are you missing a using directive or an 
     assembly reference?) 
AllowAtleastOneCountryRule.cs(6,18): error CS0234: The type or namespace name 
     'Model' does not exist in the namespace 'NRule.site' (are you missing a 
     assembly reference?) 
AllowAtleastOneCountryRule.cs(7,18): error CS0234: The type or namespace name 
     'Utilities' does not exist in the namespace 'NRule.site' (are you 
     missing an assembly reference?) 
AllowAtleastOneCountryRule.cs(11,47): error CS0246: The type or namespace name 
     'Rule' could not be found (are you missing a using directive or an 
     assembly reference?) 
AllowAtleastOneCountryRule.cs(27,28): error CS0246: The type or namespace name 
     'FundProfile' could not be found (are you missing a using directive or 
     an assembly reference?) 

Как я могу ссылаться на все сборки и компилировать этот класс в DLL? Любое руководство будет замечательным.

ответ

0

Вы должны указать дополнительные сборки в вашей команде, указанной в вашем коде.

csc /target:library reference:assembly_contained_your_types.dll /out:Mylib.dll AllowAtLeastOneCountryRule.cs 
+0

Я могу добавить ссылку на эту сборку Fluent.dsl, потому что это dll. Но как я могу обратиться к другой модели и утилиты? Они не являются сборками, а другими классами в одной папке вверх по иерархии. И эти файлы содержат другие ссылки. – talaa123

+0

'Они не являются сборками, а другими классами в одной папке вверх по иерархии.' Если они находятся в другом файле 'cs', вы должны скомпилировать их также. Перечислите их, разделенные пробелом. –

+0

Но есть и другие файлы, на которые есть ссылки в этих файлах. Я имею в виду, возможно, есть 50 файлов, которые каким-то образом связаны между собой. Как я должен собирать их вместе? Могу ли я сделать что-то вроде удаления этого файла «AllowAtLeastOneCountryRule.cs» из проекта и компиляции остальной части проекта. Получить DLL проекта из папки bin, ссылаться на нее в этом файле, а затем попробовать «csc» только со ссылкой на «FluentDsl.dll» и «myproject.dll». Сможет ли это выглядеть для вас? – talaa123

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