将项目文件升级到 new project file format 后,我的 executable client project
( .exe
)当我用 msbuild
编译它时,将错误丢弃了。
错误netsdk1047:资产文件objproject.assets.json没有目标”。确保已执行还原,并且您已将“ Net48”包含在项目的目标框架中。您可能还必须在项目的运行时识别器中包括“ Win7-X86”。
我升级了很多项目,但只有 executable client project
遇到一些麻烦,其余的工作正常。
old .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>
new .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 Filesdotnetsdk3.1.401SdksMicrosoft.NET.SdktargetsMicrosoft.PackageDependencyResolution.targets(241,5)
)抛出
*我用 nuget restore my.sln
还原解决方案依赖项和软件包
那我该怎么办? :(
任何最终从 Google 来到这里的人,我都将问题追溯到
NuGetRestore
MSBuild 社区任务。这是我们为恢复软件包所做的:我没有使用它,而是让 MSBuild 任务本身进行还原:
注意目标。我认为当我们开始混合 SDK 样式和旧样式 csproj 项目文件格式时,这个问题就出现了。