【问题标题】:MSBuild - want to get the output assemblyMSBuild - 想要得到输出程序集
【发布时间】:2020-10-03 07:37:49
【问题描述】:

我在 .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!?

然后想将它与使用任务

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

定义为内联地址,玩过斜线,清空bin/obj,重启,不知道为什么有些地址看不懂。

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

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

【问题讨论】:

    标签: visual-studio msbuild nuget visual-studio-2019


    【解决方案1】:

    你应该检查你的主项目,之前&lt;Import Project=".pack\xxx.targets" /&gt;这样的导入节点,检查你是否再次定义了outputpath属性

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

    建议

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

    那么,检查你是否在import xml节点之前重新定义了outputpath

    像这样:

    <PropertyGroup>
    <outputpath>.pack\bin\Debug\</outputpath>
    </PropertyGroup>
    ..........
    
    <Import Project=".pack\xxx.targets" />
    
    ........
    
    <UsingTask
        TaskName="brand.ProBuild.Tasks.TestFunction"
        AssemblyFile="$(TaskAssembly)" 
        />
    

    如果是这样,您应该将 OutputPath 更改为 bin\Debug\

    另外,如果对您没有帮助,请将MyProject项目的xxx.csproj分享给我们,以便我们更快解决您的问题。

    更新 1

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

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

    2)您可以在imports 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"/>
    

    【讨论】:

    • 您好,感谢您的帮助,2,3天前提出了这个问题,所以尝试了其他方法,顺便说一句,仍然渴望知道您提供的代码的结果,今天有点忙于其他任务,可能会稍微延迟提供反馈。但乍一看我可能有2个问题: 1.我不希望输出放在.pack文件夹中,是不是很奇怪? MSBuild 的行为方式,或者我错过了什么? 2. 从来没有用这种方式用变量来寻址我的项目的根,它真的可以理解 MyProject\bin\Debug\ 吗?感谢您的回答,希望很快会回到这个话题。 +1
    • 哦,看来你怪我在程序的任何部分都以这种方式定义输出路径,不,我没有定义已知属性,只是尝试使用它。该程序也是一个简单的程序,我想关于那个项目,我不想在我的目标程序集中运行它,想在当前程序集中使用并导入它,但是得到了那个奇怪的输出路径。跨度>
    • 我只有一个目标文件,并没有在任何地方定义它,将在第一时间上传项目,将再次检查所有内容,重新阅读您的答案,尝试并测试任何可能的东西,然后上传项目并将返回给您。顺便说一句,这里的帖子会有所延迟。
    • 如果你新建一个控制台项目,你得到的输出路径值和之前一样吗?如果新项目没有得到相同的东西,你可以试试这些:1)关闭VS实例,删除解决方案文件夹下的.vs隐藏文件夹,binobj文件夹,然后重新启动项目。 2)或者只是在导入xml节点之前定义正常的输出路径值。 &lt;PropertyGroup Condition="'$(Configuration)'=='Debug'"&gt; &lt;OutputPath&gt;bin\Debug\&lt;/OutputPath&gt; &lt;/PropertyGroup&gt; &lt;PropertyGroup Condition="'$(Configuration)'=='Release'"&gt; &lt;OutputPath&gt;bin\Release\&lt;/OutputPath&gt; &lt;/PropertyGroup&gt;
    猜你喜欢
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多