2017-10-12 4 views
2

ASP.NET Core 2.0을 사용하여 MVC 웹 사이트를 작성하고 있습니다..NET 표준 2의 이행 프로젝트 참조 사용 안 함

ASP.NET 핵심 프로젝트 (Web이라고 함)에서 .NET 표준 2 프로젝트를 동일한 솔루션으로 참조합니다 (Service이라고 부름). Service 프로젝트는 솔루션에서 세 번째 .NET Standard 2 라이브러리도 참조합니다 (이 코드를 Business이라고 부름). Business 프로젝트는 Model이라는 유형을 선언합니다.

문제는 내가 Web 프로젝트에 Model를 사용할 수 있다는 점이다 (컴파일러가 타입 Model를보고 내가 var a = new Model();을 할 수있는 즉)에 Web 프로젝트 Business를 참조했지만, 실제로는 단지 Service에 대한 참조를 가지고있는 것처럼.

ModelWeb에서 어떻게 숨길 수 있습니까? 이 기능은 ASP.NET Core 2의 새로운 기능입니까 아니면 모든 .NET 표준 프로젝트가 이와 같은 것입니까?

편집

here을 지정,이는 .NET 표준의 새로운 "기능"이다 전이 프로젝트 참조 때문입니다,하지만 난 그것을 어떻게 수정합니까?

+0

저는 이것이 새로운 프로젝트 형식 (현재 'project.json'과'csproj')의 기능이라고 생각합니다. 중첩 된 참조는 프로젝트 내에서 직접 사용할 수 있습니다 (일명 [전 이적 종속성] (https://github.com/dotnet/sdk/issues/200)). 단일 참조를 위해 [이 방법] (https://github.com/dotnet/project-system/issues/2313)을 사용해보십시오. –

+0

[.NET Core 1.1의 전이 참조]의 가능한 복제본 (https://stackoverflow.com/questions/42428571/transitive-references-in-net-core-1-1) –

답변

-1

시도 모델 클래스 A 내부 클래스 대신

+1

'Model'이'Business ''서비스'에서 접근하기 어렵다. 나는 투표를하지 않았다. :) – Emad

+1

OP가 다른 어셈블리에서 해당 클래스를 숨기려고하지 않고 .NET 표준/.NET 핵심 프로젝트에서 * old * 동작 (간접적 인 종속성이 노출되지 않음)을 모방하려고합니다. –

+1

이제 알겠습니다. 그것을 설명해 주셔서 고맙습니다. –

1

그럼 내 질문은 여기에 중복하지만 다른 전술을 필요로 해결하기로 표시된 하나에 가까이 public 클래스 만들기.

"Federico Dipuma"의 답변과 here에 대한 답변 덕분에이 문제를 해결할 수있었습니다.

Service.csproj 파일을 편집하고 위로 이동하지 않으려는 ProjectReference 키에 PrivateAssets="All"을 추가해야합니다.

<ItemGroup> 
    <ProjectReference Include="..\Business.csproj" PrivateAssets="All" /> 
</ItemGroup>