동일한 프로젝트에서 C # 및 VB 혼합
클래스 라이브러리의 동일한 프로젝트에서 vb 및 c # 파일을 혼합 할 수 있습니까? 가능하게하는 설정이 있습니까?
백그라운드 컴파일러가 충분히 잘 처리하는 것처럼 보이지만 (내가 같은 이름의 동일한 네임 스페이스에 2 개의 클래스가 있었고 불평하지 않았다는 사실 외에도) 인텔리 센스가 제대로 작동하지 않았습니다.
VB에서 C #으로 변환하려고 시도했지만 모든 코드 변환을 완료 하지 않았습니다 . 작성해야 할 새로운 코드가 있지만 실제로는 새로운 프로젝트를 만들고 싶지 않았습니다.
아냐, 못해 어셈블리 / 프로젝트 (각 프로젝트는 일반적으로 하나의 어셈블리로 컴파일 됨)는 하나의 언어 여야합니다. 그러나 여러 어셈블리를 사용할 수 있으며 모두 MSIL로 컴파일되므로 각각 다른 언어로 코딩 할 수 있습니다.
VB.NET 프로젝트는 실제로 .vb 파일 만 컴파일하고 C # 프로젝트는 실제로 .cs 파일 만 컴파일하므로 제대로 컴파일되고 불만을 제기하지 않았습니다. 다른 것을 무시하고 있었으므로 오류가 발생하지 않았습니다.
편집 : C # 프로젝트에 .vb 파일을 추가하는 경우 솔루션 탐색기 패널에서 파일을 선택한 다음 속성 패널을 보면 빌드 작업이 '컴파일'이 아니라 '콘텐츠'라는 것을 알 수 있습니다. 간단한 텍스트 파일로 취급되며 컴파일 된 어셈블리에 이진 리소스로 포함되지도 않습니다.
편집 : asp.net 웹 사이트를 사용하면 C # 웹 사용자 컨트롤을 vb.net 웹 사이트에 추가 할 수 있습니다
글쎄, 실제로 몇 년 전에 같은 프로젝트 내에서 VB와 C # 웹 양식을 혼합하기로 결정한 동료로부터 프로젝트를 물려 받았습니다. 그것은 효과가 있었지만 유지 관리하는 것은 재미 있지 않습니다.
새 코드는 C # 클래스 여야하고 작동하도록하려면 web.config의 컴파일 부분에 하위 노드를 추가해야했습니다.
<codeSubDirectories>
<add directoryName="VB"/>
<add directoryName="CS"/>
</codeSubDirectories>
모든 VB 코드는 App_Code의 VB라는 하위 폴더에 들어가고 C # 코드는 CS 하위 폴더에 들어갑니다. 두 개의 .dll 파일이 생성됩니다. 작동하지만 코드는 "codeSubDirectories"에 나열된 것과 동일한 순서로 컴파일되므로 C # 및 VB 모두에서 사용되는 경우 인터페이스가 VB 폴더에 있어야합니다.
VB와 C # 컴파일러에 대한 참조가 모두 있습니다.
<system.codedom>
<compilers>
이 프로젝트는 현재 프레임 워크 3.5로 업데이트되었으며 여전히 작동합니다 (그러나 유지 관리하는 재미는 없습니다.)
동일한 프로젝트 내에서 vb와 c #을 혼합 할 수 없습니다. Visual Studio에서 프로젝트 파일은 .vbproj 또는 .csproj입니다. 솔루션 내에서 vb에는 1 개의 프로젝트가 있고 c #에는 1 개의 프로젝트가 있습니다.
이것에 따르면 App_Code 디렉토리의 웹 프로젝트에서 두 가지를 모두 사용할 수 있습니다.
http://pietschsoft.com/post/2006/03/30/ASPNET-20-Use-VBNET-and-C-within-the-App_Code-folder.aspx
일부 사용자 지정 MSBuild 개발에서 가능할 수 있습니다. 제공된 .targets는 프로젝트를 단일 언어로 강제하지만,이를 막는 런타임 또는 툴링 제한은 없습니다.
VB 및 CS 컴파일러는 모두 CLR의 .obj 파일 버전 인 모듈로 출력 할 수 있습니다. 어셈블리 링커를 사용하면 VB 및 CS 코드에서 모듈을 가져와 단일 어셈블리를 생성 할 수 있습니다.
이것이 사소한 노력이 아니라고 생각할 수도 있습니다.
연습 : 웹 사이트 프로젝트에서 여러 프로그래밍 언어 사용 http://msdn.microsoft.com/en-us/library/ms366714.aspx
기본적으로 App_Code 폴더는 여러 프로그래밍 언어를 허용하지 않습니다. 그러나 웹 사이트 프로젝트에서 Visual Basic 및 C #과 같은 여러 프로그래밍 언어를 지원하도록 폴더 구조 및 구성 설정을 수정할 수 있습니다 . 이를 통해 ASP.NET은 언어별로 하나씩 여러 어셈블리를 만들 수 있습니다. 자세한 내용은 ASP.NET 웹 프로젝트의 공유 코드 폴더를 참조하십시오. 개발자는 일반적으로 웹 응용 프로그램에 여러 프로그래밍 언어를 포함시켜 독립적으로 운영되고 다른 프로그래밍 언어를 선호하는 여러 개발 팀을 지원합니다.
.NET 4.0에서 문제를 설명하고 하나의 프로젝트에서 VB와 C # 코드를 결합하는 방법을 보여주는이 링크를 확인하십시오.
http://msdn.microsoft.com/en-us/library/t990ks23.aspx
Visual Studio에서는이 기능을 지원하지 않지만 (Visual Studio 내에서가 아닌 일부 트릭을 수행하여 MSBuild가 두 가지를 컴파일하도록 할 수는 있지만) SharpDevelop 는 지원합니다. Visual Studio Professional 이상을 실행하는 한 동일한 솔루션으로 둘 다 가질 수 있으므로 Visual Studio를 계속 사용하려는 경우 가장 쉬운 솔루션은 VB 코드를 다른 프로젝트로 분리하여 액세스하는 것입니다.
프로젝트를 마우스 오른쪽 단추로 클릭하십시오. Asp.Net 폴더 추가를 선택하십시오. 폴더 아래에 VBCodeFiles라는 이름의 폴더 두 개를 만들고 Web.Config의 다른 CSCodeFiles 폴더 하나를 만듭니다.
<compilation debug="true" targetFramework="4.5.1">
<codeSubDirectories>
<add directoryName="VBCodeFiles"/>
<add directoryName="CSCodeFiles"/>
</codeSubDirectories>
</compilation>
이제 cshtml 페이지를 만듭니다. 다음을 사용하여 VBCodeFiles.Namespace.MyClassName에 대한 참조를 추가하십시오.
@using DMH.VBCodeFiles.Utils.RCMHD
@model MyClassname
여기서 MyClassName은 위 네임 스페이스에서 찾은 클래스 객체입니다. 이제 cshtml 파일을 사용하여 면도기에서 개체를 작성하십시오.
<p>@Model.FirstName</p>
C # 프로젝트 인 경우 directoryName = "CSCodeFiles"는 중복되고 VB.Net 프로젝트 인 경우 directoryName = "VBCodeFiles"는 중복됩니다.
가능합니다 .c # 및 vb.net 프로젝트를 단일 솔루션에 추가하십시오.
1 단계 : 파일-> 추가-> 기존 프로젝트
2 단계 : 프로젝트-> 참조 추가-> DLL 또는 이전에 추가 한 프로젝트의 exe.
step3 : vb.net 양식에서 U는 프로젝트의 c # 양식-> 가져 오기 네임 스페이스를 사용하려고합니다.
C # 컴파일러 (또는 VB 컴파일러)로 프로젝트를 컴파일하고 컴파일러의 잘못된 언어를 사용하지 않는 방법을 알 수 없습니다.
Keep your C# code in a separate project from your VB project. You can include these projects into the same solution.
You need one project per language. I'm quite confident I saw a tool that merged assemblies, if you find that tool you should be good to go. If you need to use both languages in the same class, you should be able to write half of it in say VB.net and then write the rest in C# by inheriting the VB.net class.
At the risk of echoing every other answer, no, you cannot mix them in the same project.
That aside, if you just finished converting VB to C#, why would you write new code in VB?
For .net 2.0 this works. It DOES compile both in the same project if you create sub directories of in app code with the related language code. As of yet, I am looking for whether this should work in 3.5 or not though.
Why don't you just compile your VB
code into a library(.dll
).Reference it later from your code and that's it. Managed dlls
contain MSIL
to which both c#
and vb
are compiled.
As others have said, you can't put both in one project. However, if you just have a small piece of C# or VB code that you want to include in a project in the other language, there are automatic conversion tools. They're not perfect, but they do most things pretty well. Also, SharpDevelop has a conversion utility built in.
No, not in the same project.but you can use them in the same solution. though you need to take care that your code is CLS compliant. That means you must not have used such functionality/feature that is not understand by other language. For example VB does not understand unsigned ints.
In our scenario, its a single VB.NET project (Windows Desktop application) in a single solution. However we wanted to take advantage of C# features like signed/unsigned integers and XML literals and string features in VB.NET. So depending on the features, at runtime we build the code file, compile using respective Rosalyn compiler (VB/CS) into DLL and dynamically load into current assembly. Of course we had to work on delinking, unloading, reloading, naming etc of the dynamic DLLs and the memory management were we largely used dynamic GUID for naming to avoid conflict. It works fine where app user may connect to any DB from our desktop app, write SQL query, convert the connection to LINQ connection and write LINQ queries too which all requires dynamic building of source code, compiling into DLL and attaching to current assembly.
Yes, You can add both of the file in web site only.If the project is a web application it will not allow different type of file.
참고URL : https://stackoverflow.com/questions/1278024/mixing-c-sharp-vb-in-the-same-project
'Programming' 카테고리의 다른 글
Xcode는 현재 소프트웨어 업데이트 서버에서 사용할 수 없습니다 (0) | 2020.06.21 |
---|---|
SQL Server 데이터베이스에서 단일 행 구성 테이블 사용 (0) | 2020.06.21 |
array [100] = {0}은 어떻게 전체 배열을 0으로 설정합니까? (0) | 2020.06.20 |
AngularJS : 멀티 파트 양식으로 간단한 파일 업로드를 구현하는 방법은 무엇입니까? (0) | 2020.06.20 |
ReSharper 약어 목록 : 어디서 수정할 수 있습니까? (0) | 2020.06.20 |