출처 : http://blogs.msdn.com/jomo_fisher/articles/410896.aspx
1. 아래의 코드를 메모장에 붙여 넣는다.
<!--
Use of included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm
Written by Jomo Fisher
-->
<Project
DefaultTargets="Build"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
These two property groups inform VS that there is a Platform called .NET 1.1.
-->
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|.NET 1.1' ">
<DebugSymbols Condition="'$(DebugSymbols)'==''">true</DebugSymbols>
<DebugType Condition="'$(DebugType)'==''">full</DebugType>
<Optimize Condition="'$(Optimize)'==''">false</Optimize>
<OutputPath Condition="'$(OutputPath)'==''">bin\.NET 1.1\Debug\</OutputPath>
<DefineConstants Condition="'$(DefineConstants)'==''">DEBUG;TRACE</DefineConstants>
<DefineConstants>$(DefineConstants);TARGETTING_FX_1_1</DefineConstants>
<ErrorReport></ErrorReport>
<WarningLevel Condition="'$(WarningLevel)'==''">4</WarningLevel>
<UseHostCompilerIfAvailable>false</UseHostCompilerIfAvailable>
<CscToolPath>$(SystemRoot)\Microsoft.NET\Framework\v1.1.4322</CscToolPath>
<TargetFrameworkVersion>v1.0</TargetFrameworkVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|.NET 1.1' ">
<DebugType Condition="'$(DebugType)'==''">pdbonly</DebugType>
<Optimize Condition="'$(Optimize)'==''">true</Optimize>
<OutputPath Condition="'$(OutputPath)'==''">bin\.NET 1.1\Release\</OutputPath>
<DefineConstants Condition="'$(DefineConstants)'==''">TRACE</DefineConstants>
<DefineConstants>$(DefineConstants);TARGETTING_FX_1_1</DefineConstants>
<ErrorReport></ErrorReport>
<WarningLevel Condition="'$(WarningLevel)'==''">4</WarningLevel>
<UseHostCompilerIfAvailable>false</UseHostCompilerIfAvailable>
<CscToolPath>$(SystemRoot)\Microsoft.NET\Framework\v1.1.4322</CscToolPath>
<TargetFrameworkVersion>v1.0</TargetFrameworkVersion>
</PropertyGroup>
<!--
Import the standard C# targets
-->
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!--
Now that the standard targets have been brought in. Override some properties
and items it created.
-->
<PropertyGroup>
<AvailablePlatforms>$(AvailablePlatforms),.NET 1.1</AvailablePlatforms>
<AssemblySearchPaths Condition=" '$(Platform)' == '.NET 1.1' ">
{CandidateAssemblyFiles};
$(ReferencePath);
{HintPathFromItem};
{TargetFrameworkDirectory};
{AssemblyFolders};
$(OutputPath);
{GAC}
</AssemblySearchPaths>
<TargetFrameworkDirectory Condition=" '$(Platform)' == '.NET 1.1'">
$(SystemRoot)\Microsoft.NET\Framework\v1.1.4322
</TargetFrameworkDirectory>
</PropertyGroup>
<ItemGroup Condition=" '$(Platform)' == '.NET 1.1'">
<TargetFrameworkDirectoryItem Include="$(SystemRoot)\Microsoft.NET\Framework\v1.1.4322">
<InProject>false</InProject>
</TargetFrameworkDirectoryItem>
</ItemGroup>
<!--
Override this target from Microsoft.Common.Targets so that we can supply our own
value for $(TargetFrameworkDirectory). This controls where assembly resolution
logic finds FX assemblies.
-->
<Target
Name="GetFrameworkPaths"
DependsOnTargets="$(GetFrameworkPathsDependsOn)">
<!-- Get the path to the target .NET framework directory. -->
<GetFrameworkPath
Condition=" '$(Platform)' != '.NET 1.1' ">
<Output TaskParameter="Path" PropertyName="TargetFrameworkDirectory"/>
<Output TaskParameter="Path" ItemName="TargetFrameworkDirectoryItem"/>
</GetFrameworkPath>
<!-- Get the path to the target .NET framework SDK directory. -->
<GetFrameworkSDKPath
Condition=" '$(Platform)' != '.NET 1.1' ">
<Output TaskParameter="Path" PropertyName="TargetFrameworkSDKDirectory"/>
<Output TaskParameter="Path" ItemName="TargetFrameworkSDKDirectoryItem"/>
</GetFrameworkSDKPath>
</Target>
<!--
For 1.1 builds, intercept the call to CorResGen target (which generates 2.0 resources) and
slip in a call to our own CoreResGen_1_1.
Handily, the devices version of the ResGen task is able to call the 1.1 version of
ResGen directly.
-->
<UsingTask TaskName="CFResGen" AssemblyFile="$(MSBuildBinPath)
\Microsoft.CompactFramework.Build.Tasks.dll" />
<PropertyGroup Condition="'$(Platform)' == '.NET 1.1'">
<ResGenDependsOn>ResolveAssemblyReferences;BeforeResGen;CoreResGen_1_1;AfterResGen</ResGenDependsOn>
</PropertyGroup>
<Target
Name="CoreResGen_1_1"
DependsOnTargets="$(CoreResGenDependsOn)">
<CFResGen
Condition = " '@(ResxWithNoCulture)' != ''"
Sources = "@(ResxWithNoCulture)"
UseSourcePath = "$(UseSourcePath)"
StateFile = "$(IntermediateOutputPath)$(MSBuildProjectFile).CrossCompileResGen.Cache"
OutputResources = "@(ManifestResourceWithNoCultureName->'$(IntermediateOutputPath)%
(Identity).resources')"
>
<!-- Appending to 'FilesWritten' list lets us be part of Clean and Incremental Clean. -->
<Output TaskParameter = "FilesWritten" ItemName="FileWrites"/>
<Output TaskParameter = "OutputResources" ItemName="ManifestResourceWithNoCulture"/>
</CFResGen>
<CFResGen
Condition = " '@(ResxWithCulture)' != ''"
Sources = "@(ResxWithCulture)"
UseSourcePath = "$(UseSourcePath)"
StateFile = "$(IntermediateOutputPath)$(MSBuildProjectFile).CrossCompileResGen.Cache"
OutputResources = "@(ManifestResourceWithCultureName->'$(IntermediateOutputPath)%
(Identity).resources')"
>
<!-- Appending to 'FilesWritten' list lets us be part of Clean and Incremental Clean. -->
<Output TaskParameter = "FilesWritten" ItemName="FileWrites"/>
<Output TaskParameter = "OutputResources" ItemName="ManifestResourceWithCulture"/>
</CFResGen>
</Target>
</Project>
2. 파일 이름을 CrossCompile.CSharp.targets로 한다.
3. CrossCompile.CSharp.targets이라는 이름의 파일을 C:\에서 msbuild라는 폴더를 검색하고
해당 폴더에 파일을 Copy 한다.
4. C# 콘솔 프로젝트를 생성한다.
5. 메모장을 열고 MyApp.cspro파일의 <import>라는 파일을 아래와 같이 변경한다.
<Import Project="$(MSBuildExtensionsPath)\CrossCompile.CSharp.targets" />
6. 프롬프트에서 프로젝트를 다시 로드 한다.
7. 보안 다이얼로그가 활성화되면 Load Project Normally를 선택한다.
8. VS에서 ‘Any CPU’ 와 ‘Configuration Manager’를 선택한다.
9. Active Solution Platform 에서 <new>를 선택한다.
10. .NET 1.1을 선택하고 OK를 클릭한다.
11. using System.Collections.Generic, System.Collections.Generic을 삭제한다.
12. 11번은 닷넷 1.1에서는 지원하지 않는다.
'IT_Programming > C#' 카테고리의 다른 글
스레드(thread) 예제 (0) | 2007.12.23 |
---|---|
위임(Delegate) 예제 (0) | 2007.12.23 |
[펌] C#: C++에서 C#으로의 전환을 위해 알아 두어야 할 사항 - Jesse Libe (0) | 2007.03.03 |
C#으로 만드는 자바 스크립트, Script# (0) | 2007.01.21 |
[Effective C#] 개발 지침 50 (0) | 2007.01.19 |