MSBuild - 想要获取输出程序集

MSBuild - want to get the output assembly

我在名为 .pack 的 文件夹中有一个 .targets 文件 我有这个:

  <PropertyGroup>
    <TaskAssembly>$(OutputPath)netstandard2.1\Test.dll</TaskAssembly>
  </PropertyGroup>

为什么而不是 MyProject\bin\Debug\netstandard2.1\MyProject.dll 它位于下面一行?

MyProject\.pack\bin\Debug\netstandard2.1\MyProject.dll

为什么会有.pack!?

然后想将它与 Using 任务一起使用

  <UsingTask
    TaskName="brand.ProBuild.Tasks.TestFunction"
    AssemblyFile="$(TaskAssembly)" 
    />

定义为内联地址,玩斜杠,清除bin/obj,重新启动,不知道为什么有些地址看不懂。

在我的目标文件中定义并使用了几个路径变量,有些工作正常,有些很麻烦,尤其是当想使用父级或斜杠 '/' 的一些问题时,不知道可能某些地址随机工作。但是 $(OutputPath) 有什么问题?!

Visual-studio 2019,.Net Standard 2.1(它有多个目标,我想获得那个特定的 dll)

你应该检查你的主项目,导入节点之前<Import Project=".pack\xxx.targets" />,检查你是否定义了输出路径 属性 再次点赞

<outputpath>.pack\bin\Debug\</outputpath>

建议

根据您的描述,您创建了一个自定义 MSBuild 任务 dll 以在另一个项目中使用其新的自定义任务,首先,请确保 Test.dll 在您项目的输出文件夹名为 MyProject.

Then,检查是否在import[=68]之前重新定义了outputpath =]节点.

像这样:

<PropertyGroup>
<outputpath>.pack\bin\Debug\</outputpath>
</PropertyGroup>
..........

<Import Project=".pack\xxx.targets" />

........

<UsingTask
    TaskName="brand.ProBuild.Tasks.TestFunction"
    AssemblyFile="$(TaskAssembly)" 
    />

如果这样,你应该把OutputPath改成bin\Debug\.

此外,如果对您没有帮助,请与我们分享项目MyProjectxxx.csproj,以便我们更快地解决您的问题。

更新 1

由于您的项目中只有一个目标文件,我建议您可以遵循以下建议:

1)关闭VS Instance,进入你的项目文件夹,删除solution文件夹下的.vs隐藏文件夹,binobj 文件夹。然后,重新启动您的项目以再次测试。

2) 您可以在导入 xml 节点之前在 xxx.csproj 文件中定义正确的值以强制输出路径的正确值。

    <PropertyGroup Condition="'$(Configuration)'=='Debug'">
    <OutputPath>bin\Debug\</OutputPath>
    </PropertyGroup>
    <PropertyGroup Condition="'$(Configuration)'=='Release'">
    <OutputPath>bin\Release\</OutputPath>
    </PropertyGroup>
  .......
  <Import Project="xxx.targets"/>