2015-01-08 2 views
-3

Я хотел бы использовать модуль vb.net в моем проекте C#. Я скомпилировал модуль vb.net, и я добавил ссылку на его dll в проекте C#, но я не вижу его в проекте C#. Модуль является общедоступным, я пытался записать его пространство имен (имя файла dll) до имени модуля, я попытался вручную вставить using moduleNameSpace, я проверил, что оба проекта имеют одну и ту же целевую структуру (4.5 без профиля клиента), но я все еще могу " видеть это. Я понятия не имею, что мне делать дальше. Может ли кто-нибудь мне помочь? Благодаря!Используйте модуль vb.net в проекте C#

Часть модуля vb.net:

Namespace GestioneSetupFile 
Public Module GestioneSetupFiles 
    Private Const TAB_POS As Short = 30 
    Dim Testo, Paragrafo As String 
    Dim PtrParagrafo As Integer 

    Public DEFAULT_APP_DIR As String = My.Application.Info.DirectoryPath 
    'Public DEFAULT_APP_DIR As String = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\BTSR\PC-LINK NEMO" 

    Public DEFAULT_CONFIG_DIR As String = DEFAULT_APP_DIR + "\Config" 

    Public Sub CheckConfigDir() 
    'Verifica la presenza della cartella Config 
    'Se non esiste la crea e per compatibilità con le versioni precedenti ci copia dentro tutti i files .cfg e .dat che trova 
    If Not My.Computer.FileSystem.DirectoryExists(DEFAULT_CONFIG_DIR) Then 
     'Dim NomeFile As String 
     My.Computer.FileSystem.CreateDirectory(DEFAULT_CONFIG_DIR) 
     'NomeFile = Dir(DEFAULT_APP_DIR + "\*.cfg") 
     'While NomeFile <> "" 
     ' 'My.Computer.FileSystem.MoveFile(DEFAULT_APP_DIR + "\" + NomeFile, DEFAULT_CONFIG_DIR + "\" + NomeFile) 
     ' 'per compatibilità con vecchio (se reinstallato) non sposta ma copia i file 
     ' My.Computer.FileSystem.CopyFile(DEFAULT_APP_DIR + "\" + NomeFile, DEFAULT_CONFIG_DIR + "\" + NomeFile) 
     ' NomeFile = Dir() 
     'End While 
     'NomeFile = Dir(DEFAULT_APP_DIR + "\*.dat") 
     'While NomeFile <> "" 
     ' 'My.Computer.FileSystem.MoveFile(DEFAULT_APP_DIR + "\" + NomeFile, DEFAULT_CONFIG_DIR + "\" + NomeFile) 
     ' 'per compatibilità con vecchio (se reinstallato) non sposta ma copia i file 
     ' My.Computer.FileSystem.CopyFile(DEFAULT_APP_DIR + "\" + NomeFile, DEFAULT_CONFIG_DIR + "\" + NomeFile) 
     ' NomeFile = Dir() 
     'End While 
    End If 
End Sub 
End Module 
End Namespace 

И это мой вызов в C# проекта:

using System; 
/*Others using*/ 
using Microsoft.VisualBasic; 
using GestioneSetupFile; //Compile error 

namespace UltraFeederControl 
{ 
    public partial class Form1 : Form 
    { 
     private void updateConfigFile() 
     { 
      GestioneSetupFiles.CheckConfigDir(); 
     } 
    } 
} 
+2

Почему вы не можете взять код из vb.Module и преобразовать его в эквивалент C# и создать класс в C# или метод расширения, который эмулирует такая же функциональность. Если вы не знаете, как это сделать, тогда опубликуйте подписи кода модулей и ее функциональность, и один из них может указать вам в правильном направлении в отношении преобразования кода. – MethodMan

+0

Вы искали в браузер объектов? –

+1

Без (минимального) определения вашего модуля VB, вашего попытки использования на C# и ошибки компилятора, которую вы получаете, никто не сможет дать вам прямой ответ. –

ответ

1

здесь является C# конвертированы код, который вам нужно .. убедитесь, что если вы добавить это класс, который вы поместите

using Microsoft.VisualBasic; 
using System; 
using System.Collections; 
using System.Collections.Generic; 
using System.Data; 
using System.Diagnostics; 

namespace GestioneSetupFile 
{ 
    public static class GestioneSetupFiles 
    { 
     private const short TAB_POS = 30; 
     static string Testo; 
     static string Paragrafo; 

     static int PtrParagrafo; 
     public static string DEFAULT_APP_DIR = My.Application.Info.DirectoryPath; 

     public static string DEFAULT_APP_DIR = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\\BTSR\\PC-LINK NEMO"; 

     public static string DEFAULT_CONFIG_DIR = DEFAULT_APP_DIR + "\\Config"; 
     public static void CheckConfigDir() 
     { 

      if (!My.Computer.FileSystem.DirectoryExists(DEFAULT_CONFIG_DIR)) 
      { 
       string NomeFile = null; 
       My.Computer.FileSystem.CreateDirectory(DEFAULT_CONFIG_DIR); 
       NomeFile = FileSystem.Dir(DEFAULT_APP_DIR + "\\*.cfg"); 
       while (!string.IsNullOrEmpty(NomeFile)) 
       { 
        My.Computer.FileSystem.MoveFile(DEFAULT_APP_DIR + "\\" + NomeFile, DEFAULT_CONFIG_DIR + "\\" + NomeFile); 
        My.Computer.FileSystem.CopyFile(DEFAULT_APP_DIR + "\\" + NomeFile, DEFAULT_CONFIG_DIR + "\\" + NomeFile); 
        NomeFile = FileSystem.Dir(); 
       } 
       NomeFile = FileSystem.Dir(DEFAULT_APP_DIR + "\\*.dat"); 
       while (!string.IsNullOrEmpty(NomeFile)) 
       { 
        My.Computer.FileSystem.MoveFile(DEFAULT_APP_DIR + "\\" + NomeFile, DEFAULT_CONFIG_DIR + "\\" + NomeFile); 
        My.Computer.FileSystem.CopyFile(DEFAULT_APP_DIR + "\\" + NomeFile, DEFAULT_CONFIG_DIR + "\\" + NomeFile); 
        NomeFile = FileSystem.Dir(); 
       } 
      } 
     } 
    } 
} 

To see Hot Root NameSpace Work in VB vs C#.NET посмотрите здесь, и вы увидите, как исправить пр oblem иначе конвертированная часть - это то, что я начал для вас, здесь.

+0

Спасибо, но я разместил только часть модуля, и, тем не менее, я хотел бы объяснить, почему я не могу просто включить его – Vitto

+0

, возможно, вам нужно полностью квалифицировать пространство имен I хотелось бы посмотреть, как выглядит пространство имен проекта C# .. тогда назовите свой Visualbasic один и тот же, или вы получите доступ к нему, но вам нужно сделать это полностью квалифицированное пространство имен – MethodMan

+0

Vito вы можете посмотреть на эта ссылка также [VB.NET Namespave] (http://msdn.microsoft.com/en-us/library/zt9tafza.aspx) – MethodMan

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