首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >多目标与.NET紧凑框架3.5使用新的.csproj格式?

多目标与.NET紧凑框架3.5使用新的.csproj格式?
EN

Stack Overflow用户
提问于 2018-03-04 17:20:40
回答 1查看 1.1K关注 0票数 1

是否有一种方法可以用新的.NET文件格式来针对.csproj CompactFramework3.5?我希望能够针对以下框架:

代码语言:javascript
运行
复制
<TargetFrameworks>netstandard2.0;netstandard1.0;net45;net40;net35;net35-cf</TargetFrameworks>

到目前为止,我所做的都是基于这个GitHub要点 --详细地说,我做了以下工作:

  1. 安装了.NET CF 3.5和Power
  2. $(MSBuildBinPath)替换为文件C:\Windows\Microsoft.NET\Framework\v3.5\Microsoft.CompactFramework.CSharp.targets中的C:\Windows\Microsoft.NET\Framework\v3.5
  3. 从复制所有文件
    • C:\Program Files (x86)\Microsoft.NET\SDK\CompactFramework\v3.5\WindowsCE to
    • C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v3.5\Profile\CompactFramework

  1. 在上面的文件夹中创建了RedistList\FrameworkList.xml文件,内容如下: <?xml version="1.0" encoding="utf-8"?> <FileList Redist="Net35-CF" Name=".NET Compact Framework 3.5"> </FileList>
  2. 添加了注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319\SKUs\.NETFramework,Version=v3.5,Profile=CompactFramework (只是键,没有值)
  3. 创建新项目,设置TargetFrameworks,并为net35-cf添加条件属性组
代码语言:javascript
运行
复制
<PropertyGroup Condition="'$(TargetFramework)' == 'net35-cf'">
    <!-- inference fails for this TFM, so specify it by hand -->
    <TargetFrameworkIdentifier>.NETFramework</TargetFrameworkIdentifier>
    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
    <TargetFrameworkProfile>CompactFramework</TargetFrameworkProfile>
    <!-- define compilation constants by hand too -->
    <DefineConstants>NET35_CF;WindowsCE</DefineConstants>
    <!-- disable implicit references, these are specified by hand, below -->
    <DisableImplicitFrameworkReferences>True</DisableImplicitFrameworkReferences>
</PropertyGroup>
<PropertyGroup Condition=" '$(TargetFramework)' == 'net35-cf' ">
    <NoStdLib>True</NoStdLib>
    <NoConfig>true</NoConfig>
    <FileAlignment>512</FileAlignment>
    <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
    <PlatformID>E2BECB1F-8C8C-41ba-B736-9BE7D946A398</PlatformID>
</PropertyGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'net35-cf' ">
    <Reference Include="mscorlib, Version=3.5.0.0, Culture=neutral, PublicKeyToken=969db8053d3322ac" />
    <Reference Include="System, Version=3.5.0.0, Culture=neutral, PublicKeyToken=969db8053d3322ac" />
    <Reference Include="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=969db8053d3322ac" />
</ItemGroup>

然而,当我试图编译我的代码时,我会收到以下错误消息:

看来一般的编译是可行的,但是AssemblyFileVersionAttribute不是紧凑框架的一部分吗?

更新1:当删除net35-cf TFM时,项目编译得很好。

谢谢你提前帮忙!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-04 21:37:49

可以通过在AssemblyFileVersionAttribute文件中指定AssemblyVersionAttribute.csproj来禁用.csproj.csproj的生成。

代码语言:javascript
运行
复制
<PropertyGroup "'$(TargetFramework)' == 'net35-cf'">
    <GenerateAssemblyFileVersionAttribute>false</GenerateAssemblyFileVersionAttribute>
    <GenerateAssemblyVersionAttribute>false</GenerateAssemblyVersionAttribute>
</PropertyGroup>

参考资料:等效于dotnet核心/csproj中的AssemblyInfo

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49098134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档