首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VisualStudio2017 MSBuild任务开发

VisualStudio2017 MSBuild任务开发
EN

Stack Overflow用户
提问于 2017-01-11 03:20:22
回答 1查看 2.7K关注 0票数 4

使用VisualStudio2017 RC开发自定义MSBuild任务时,我会遇到以下问题:一旦添加了Microsoft.Build.Utilities.Core以外的其他依赖项(对于.NET核心支持使用v15.1.0-预览-000458-02),我就无法将任务加载到另一个.csproj MSBuild项目中,因为没有找到依赖项。

是否有一种自动将所有依赖项复制到Debug文件夹的方法?还是每次我想测试它的时候都要发布它?

Update1:

发布的问题在我的环境中是本地的,并且已经解决了。

Update2

看来,一旦我将TargetFramework从netstandard1.4更改为netstandard1.6,它甚至根本无法加载任务。一旦我使用netStandard1.6,它就会抛出一个异常:

代码语言:javascript
复制
The task could not be loaded from the assembly.
Could not load file or assembly 'System.Runtime, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its
dependencies.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-05 03:18:03

是否有一种自动将所有依赖项复制到Debug文件夹的方法?还是每次我想测试它的时候都要发布它?

默认情况下,出于很好的理由,.NET核心和.NET标准项目不会将引用的程序集复制到生成文件夹中。相反,它们是从NuGet缓存中解析的。

但是,如果您确实需要它,则可以通过使用CopyLocalLockFileAssemblies设置覆盖默认设置来更改此行为。

代码语言:javascript
复制
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>

Cref:https://github.com/dotnet/sdk/blob/d20405f91a2959fa91fea6285d9a896286727f2a/src/Tasks/Microsoft.NET.Build.Tasks/build/Microsoft.NET.Sdk.BeforeCommon.targets#L55-L56

第二个问题

看来,一旦我将TargetFramework从标准1.4改为标准1.6

要构建一个同时工作在"MSBuild.exe“和"dotnet.exe msbuild”上的任务程序集,您应该瞄准netstandard1.4或更低版本。netstandard1.6与.NET Framework4.6.1( MSBuild.exe运行在其上)不兼容。

如果您需要netstandard1.4中不可用的API,则需要交叉编译.NET框架和.NET标准的任务,这要复杂得多,但可以完成。

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

https://stackoverflow.com/questions/41582142

复制
相关文章

相似问题

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