Shr*_*ike 5 .net msbuild vs-extensibility vsix visual-studio-2017
我有一个包含几个针对net461和netcoreapp2.0的项目的解决方案。该解决方案还包含带有DslTools扩展名的VSIX项目。VSIX项目使用旧的csproj格式,而其他项目使用新的csproj格式(SDK)。但是所有项目都将PackageReference格式用于nuget引用。
因此,没有packages.config,也没有project.json。
VSIX项目依赖Microsoft.VSSDK.BuildTools
nuget包和VSExtensibility系列的其他包。
对于DSL工具,我必须将所需的资产从DSL SDK(建模SDK)复制到我的项目中,并明确引用它们。
该解决方案正在VS2017中构建就好了。
当我通过dotnet CLI(dotnet build)构建它时,出现这样的错误:
D:\..\src\packages\microsoft.vssdk.buildtools\15.5.72\tools\VSSDK\Microsoft.VsSDK.targets(82,5): error MSB4062: The "CompareCommonBuildTaskVersion" task could not be loaded from the assembly D:...\src\packages\microsoft.vssdk.buildtools\15.5.72\tools\VSSDL\Microsoft.VisualStudio.Sdk.BuildTasks.dll. Could not load file or assembly 'System.IO.Packaging, Version=0.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
Run Code Online (Sandbox Code Playgroud)
dotnet CLI下的MSBuild可能无法Microsoft.VisualStudio.Sdk.BuildTasks.dll
从VSSDK 加载。
因此,无法使用dotnet CLI构建VSIX项目。
然后,我尝试通过msbuild.exe进行构建。它应该可以在VS中正常工作,但不能。
目前,我得到:
"D:..\Src\DslDesigner\Dsl\Dsl.csproj" (default target) (2) ->
(ResolveNuGetPackageAssets target) ->
Z:\Prog\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\NuGet\15.0\Microsoft.NuGet.targets(184,5): error : Your project.json doesn't have a runtimes section. You should add '"runtimes": { "win": { } }' to your project.json and then re-run NuGet restore. [D:...\Src\DslDesigner\Dsl\Dsl.csproj]
Run Code Online (Sandbox Code Playgroud)
根据此问题,在NuGet中有点过时的消息。但这是关于消息而不是错误。
VSIX-csproj具有:ToolsVersion =“ 15.0” TargetFrameworkVersion = 4.6.1
所以我不知道如何在命令行中构建我的解决方案。有什么建议吗?
是什么帮助解决了该问题-我将以下属性添加到了所有与VSIX相关的(旧格式)csproj-s中:
<RuntimeIdentifiers>win</RuntimeIdentifiers>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
993 次 |
最近记录: |