클래스 라이브러리의 동일한 프로젝트에서 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 웹 프로젝트의 공유 코드 폴더를 참조하십시오. 개발자는 일반적으로 독립적으로 작동하고 다른 프로그래밍 언어를 선호하는 여러 개발 팀을 지원하기 위해 웹 응용 프로그램에 여러 프로그래밍 언어를 포함합니다.
답변
Visual Studio에서는이 기능을 지원하지 않지만 (Visual Studio 내에서가 아닌 일부 트릭을 수행하고 MSBuild가 두 가지를 컴파일하도록 할 수는 있지만) SharpDevelop 는 지원합니다. Visual Studio Professional 이상을 실행하는 한 동일한 솔루션으로 둘 다 가질 수 있으므로 Visual Studio를 계속 사용하려는 경우 가장 쉬운 솔루션은 VB 코드를 다른 프로젝트로 분리하여 액세스하는 것입니다.
답변
프로젝트를 마우스 오른쪽 단추로 클릭하십시오. Asp.Net 폴더 추가를 선택하십시오. 폴더에서 VBCodeFiles라는 이름의 폴더 두 개와 Web의 다른 CSCodeFiles를 만듭니다 .Config에서 컴파일중인 새 요소 추가
<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”는 중복됩니다.