在 C# 项目中使用 vb.net 模块

本文关键字:vb net 模块 项目 | 更新日期: 2023-09-27 18:36:45

我想在我的 c# 项目中使用 vb.net 模块。我编译了 vb.net 模块,并在 c# 项目中添加了对其 dll 的引用,但在 c# 项目中看不到它。该模块是公共的,我尝试在模块名称之前写入其命名空间(dll文件名),我尝试手动插入using moduleNameSpace,我检查了两个项目是否具有相同的目标框架(4.5没有客户端配置文件),但我仍然看不到它。我不知道我应该进一步做什么。谁能帮我?谢谢!

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();
       }
   }
}

在 C# 项目中使用 vb.net 模块

这是您需要的 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();
                }
            }
        }
    }
}

要查看 VB 与 C#.NET 中的热根命名空间工作,请查看此处,您将看到如何解决您的问题,否则转换后的部分是我为您开始的。

可能有更好的方法可以做到这一点,但就我而言,有问题的模块是 VB 项目的一部分,该项目也有一个我可以引用的类库。 我刚刚在该库中创建了一个调用模块中函数的方法。 这给了我访问权限,我不需要复制代码。 当我们重写它时,我应该不需要更改我的 C# 代码。 这有点不同,因为我正在访问模块中的一个函数,但在这里我认为它看起来像这样,但你明白了:

Public Class MyLibrary
    Public Shared Sub GestioneSetupFiles()
        GestioneSetupFile.GestioneSetupFiles()
    End Sub
End Class