2014-12-03 4 views
1

SharpDX 라이브러리를 사용하고 싶습니다. 필자가 직접 소스 코드를 컴파일 할 수 있어야합니다. Net40 구성을 사용하여 GitHub에서 최신 소스 코드를 쉽게 컴파일 할 수 있습니다. SharpDX을소스에서 컴파일 된 SharpDX를 사용 하시겠습니까?

  • 다운로드 및 추출 : https://github.com/sharpdx/SharpDX/issues/379

    이 다음 단계를 수행 나 결과 : 지금은 내 자신의 프로젝트에서 컴파일 된 프로젝트를 사용하고 싶습니다, 나는 그렇게하려면 다음을 발견했다 소스 코드에 "./SharpDX"

  • 파일을 열고 "./SharpDX/SharpDX.sln"
  • 구성 관리자에서 구성 Net40와 SharpDX 소스 코드를 작성
  • 다음과 같은 내용으로 파일 "./MyProject/Common.targets"를 만들기 :

    <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
        <PropertyGroup> 
        <!-- set the location of SharpDX source code --> 
        <SharpDXLocation Condition="'$(SharpDXLocation)' == ''">..\SharpDX</SharpDXLocation> 
        <!-- the new property to include references automatically (as it was in old SharpDX.targets) --> 
        <SharpDXIncludeReferences>true</SharpDXIncludeReferences> 
        <!-- (optional) override DirectX version --> 
        <SharpDXDirectXVersion>DirectX11</SharpDXDirectXVersion> 
        <!-- disable usage of signed assemblies, as you won't have the needed private key to build them --> 
        <SharpDXNoSigned>true</SharpDXNoSigned> 
        </PropertyGroup> 
    
        <Import Project="$(SharpDXLocation)\Build\SharpDX.targets" /> 
        <Import Project="$(SharpDXLocation)\Build\SharpDX.Toolkit.targets" /> 
    </Project> 
    
  • 다음과 같은 내용으로 파일 "./MyProject/SharpDXHelper.csproj"를 만들기 :

    <?xml version="1.0" encoding="utf-8"?> 
    <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="BuildTarget"> 
        <Import Project="Common.targets" /> 
        <Target Name="BuildTarget"> 
         <Message Text="Building command for SharpDXHelper" Importance="high" /> 
        </Target> 
        <Target Name="Rebuild"> 
         <Message Text="Rebuilding command for SharpDXHelper" Importance="high" /> 
        </Target> 
        <Target Name="Clean"> 
         <Message Text="Cleaning command for SharpDXHelper" Importance="high" /> 
        </Target> 
    </Project> 
    
  • 엽니 다 파일 "./MyProject/SharpDXHelper.csproj"Visual Studio.

    경고 : 나는 "참조"은 "./MyProject/SharpDXHelper.csproj"의 일부를 확장하면

내가 경고 아이콘이 필요한 모든 참조를 참조 경고는 다음과 같다 13 참조 된 구성 요소 'SharpDX'을 (를) 찾을 수 없습니다. SharpDXHelper

내가 잘못한 것을 이해하지 못하고 왜 올바른 구성 요소를 찾지 못합니까? "Toolkit"부분이 사라지고로드가 실패 할 것으로 예상되지만 나머지는 실패 할 것으로 예상하지는 않습니다.

"SharpDXHelper.csproj"를 다른 프로젝트에 대한 종속성으로 추가하면이 프로젝트에서 SharpDX 라이브러리를 사용할 수 있어야합니다.

결과 문제의 이미지는 여기에서 찾을 수 있습니다 : 나는 종속성으로 "SharpDXHelper.csproj"를 추가하면 내 이해에 http://puu.sh/dfmP4/c6ac1165ed.png

답변

0

, 나는 문제없이 SharpDX 라이브러리를 사용할 수 있어야합니다 다른 프로젝트에도이 프로젝트를 수정해야합니까?

아니요.

참조 된 프로젝트는 가져 오기 작업을 사용하여 가져온 프로젝트로 평가되지 않습니다. 프로젝트 B1이 분리 및 컴파일 가능한 프로젝트로 간주됩니다

  • 프로젝트 A1에서 프로젝트 B1을 참조하는. B1에 의해 정의 된 모든 특성 및 대상은 A1에 표시되지 않습니다.
  • 프로젝트 B1을 A1으로 가져 오는 것은 프로젝트 B1을 A1에 인라인하는 것과 같습니다.B1에 정의 된 모든 속성과 대상은 A1에서 볼 수 있으며 포함 지점 이전에 정의 된 모든 것을 재정의합니다.

이 때문에 우리는 가져온 프로젝트에 ".targets"확장명을 사용하여 참조 된 프로젝트와 구분합니다 .

A1을 컴파일 할 때 A1에 의해 "로컬로 복사"될 수있는 그런 참조 된 프로젝트 B1을 개발할 수는 있지만 .NET/C#에서 참조하는 프로젝트가 교차 참조를 얻는 방법을 파헤쳐 야합니다. 이것을하기 위해 컴파일됩니다. 이것은 가능하지만, 개발하는 것은 상당히 어렵습니다.

가져 오기 솔루션을 계속 사용하는 것이 좋습니다.

+0

나는 당신의 충고를 받아서 를 기존 프로젝트 파일에 추가했고, 내 기대에 반하여 실제로 효과가있었습니다. 물론 Toolkit API가 없으면 언젠가 업데이트해야합니다. 필자가 가져 오기를 추가 한 프로젝트 파일은 NuGet (내가 가져온 것)과 함께 작동하도록 설계되었으므로 그 원인을 도울 수 있습니다. 내가 다시 깨울 때, 나는 그것이 프로젝트 파일과 함께 작동하고 내가 만든 프로젝트 파일이 아니라는 것을 보게 될 것입니다. – ManIkWeet

관련 문제