소스 파일 및 속성을 공유하려는 많은 프로젝트가있는 솔루션이 있습니다. 예를 들어 공통 .props 파일에 소스 파일을 넣으면 소스 파일은 빌드에 영향을 주지만 Visual Studio에는 표시되지 않습니다. 짧은 예는 다음과 같습니다공통 소스 파일 및 속성을 지정하고 Visual Studio에 표시하는 방법
Scratch.csproj :
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<ItemGroup>
<Compile Include="Program.cs"/>
</ItemGroup>
<Import Project="a.props" />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
A.props :
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Compile Include="a.cs"/>
</ItemGroup>
</Project>
a.cs, Program.cs :
namespace Scratch
{
public class A {}
}
이 코드는하지 않습니다 클래스 A가 두 번 선언 되었기 때문에 컴파일하십시오. 그러나 a.cs 파일은 Visual Studio 솔루션에 아무 것도 표시되지 않습니다. 솔루션에 표시되는 공유 속성과 소스 파일을 가질 수 있도록이 문제가 해결 되었습니까? 한 가지 가능성이 a.props 대신 a.csproj를 사용하여 솔루션에 추가하는 것을 보았습니다. 그러나 그것도 문제가 있습니다. 대신에 해당 프로젝트의 일부 속성 (조건 집합에 따라 다름)을 사용하는 경우 어떤 소스 파일이나 속성이 어떤 프로젝트로 이동하는지 명확하지 않습니다.
공통 코드를 클래스 라이브러리에 넣는 것만 큼은 어떨까요? –
코드 파일뿐 아니라 속성에 대해서도이 작업을 수행하려고합니다. 또한 공유 코드는 단일 모듈로 컴파일하기에 충분한 코드가 아니므로이를 수행하기 어려울 수 있습니다. –
하나의 작은 클래스도 클래스 라이브러리에 만들 수 있습니다. –