如果在我不用到新功能的情况下,可否做到这点?因为想用新版本的软件,但我写的程序,不可能让那么多服务器一下次都升级。

解决方案 »

  1.   

    你要你写的程序里没有用到2.0新加的类或用法就可以(比如泛型,静态类等)
    你可以查查MSDN,里面对每个类或关键字都有写支持哪些版本的framework
      

  2.   

    可以,如果没有安装1。1在开发机器上则需要手工设定SDK的版本再发布
      

  3.   

    可以的,可以用2005的IDE,编译1.1的版本。
      

  4.   

    <!--
    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>