如何解决资产文件obj \ project.assets.json没有目标“ .NETFramework,Version = v4.8 / win7-x86”NETSDK1047 旧的.vbproj格式仅标题:新的.vbproj格式仅标题:我尝试什么?更多信息:
将项目文件升级到new project file format后,当我使用.exe
进行编译时,我的可执行客户端项目(msbuild
)会引发错误:>
错误NETSDK1047:资产文件obj \ project.assets.json没有 目标“ .NETFramework,Version = v4.8 / win7-x86”。确保 恢复已执行,并且您已在其中包含“ net48” 您项目的TargetFrameworks。您可能还必须包括 项目的RuntimeIdentifiers中的“ win7-x86”。
我升级了很多项目,但是只有可执行客户端项目会带来一些麻烦,其余的都可以正常工作。
旧的.vbproj
格式(仅标题):
我之前使用的格式如下:
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{1187BEA1-xxxx-43CF-xxxx-0C142F0A16FC}</ProjectGuid>
<OutputType>WinExe</OutputType>
<MyType>WindowsForms</MyType>
<RootNamespace>MyNamespace</RootNamespace>
<AssemblyName>MyAssemblyName</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<OptionExplicit>On</OptionExplicit>
<OptionCompare>Binary</OptionCompare>
<OptionStrict>On</OptionStrict>
<OptionInfer>On</OptionInfer>
<ApplicationIcon>MyIcon.ico</ApplicationIcon>
<RestorePackages>true</RestorePackages>
</PropertyGroup>
新的.vbproj
格式(仅标题):
我升级为的格式如下:
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
<PropertyGroup>
<RootNamespace>MyRootNamespace</RootNamespace>
<AssemblyName>MyAssemblyName</AssemblyName>
<Deterministic>false</Deterministic>
<TargetFramework>net48</TargetFramework>
<OutputPath>$(SolutionDir)bin\$(Configuration)\</OutputPath>
<OutputType>WinExe</OutputType>
<ApplicationIcon>MyIcon.ico</ApplicationIcon>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
<OptionStrict>On</OptionStrict>
<StartupObject>Program</StartupObject>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>
我尝试什么?
-
就像异常建议一样,我将
<RuntimeIdentifier>win7-x86</RuntimeIdentifier>
添加到我的可执行客户端项目中。我知道为什么编译器会在这里期望win7-x86
。我正在win10
机器上工作。我执行gt clean -xfd
来摆脱obj
文件夹,但没有任何变化,相同的例外。 -
我使用
dotnet restore my.sln
代替nuget restore
更多信息:
-
我不确定
<StartupObject>Program</StartupObject>
与<OutputType>WinExe</OutputType>
的组合是否足以执行可执行的客户端项目。那是最先进的吗? -
另一个奇怪的事情是,第一个编译工作完全正常。几次后,发生上述异常。完全重启计算机也可以解决该异常,但是每次编译后我都无法重启计算机。
-
NETSDK1047
引发异常(Microsoft.PackageDependencyResolution.targets
)(完整路径:C:\Program Files\dotnet\sdk\3.1.401\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets(241,5)
) -
我使用
恢复了我的解决方案依赖性和软件包nuget restore my.sln
那我该怎么办? :(
解决方法
在我的机器上构建良好。为什么不是我的 CI 管道?
因此,我通过从头开始构建,将我的小型 csproj winform 项目从旧式格式转换为 SDK 格式,但也出现了此错误。
这是我的起点:
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFrameworks>net48;netcoreapp3.1;net50-windows</TargetFrameworks>
<UseWindowsForms>true</UseWindowsForms>
<ApplicationManifest>app.manifest</ApplicationManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|net48|AnyCPU'">
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Ross.Utilities.Crypto\Ross.Utilities.Crypto.csproj" />
</ItemGroup>
</Project>
我查看了我的 Azure CI 管道并意识到它的目标是 Release
的 BuildConfiguration - 所以我添加了一个新的 PropertyGroup 以便我可以正确地定位 Release|net48|AnyCPU
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFrameworks>net48;netcoreapp3.1;net50-windows</TargetFrameworks>
<UseWindowsForms>true</UseWindowsForms>
<ApplicationManifest>app.manifest</ApplicationManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|net48|AnyCPU'">
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net48|AnyCPU'">
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Ross.Utilities.Crypto\Ross.Utilities.Crypto.csproj" />
</ItemGroup>
</Project>
现在我一切都好了!!!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。