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\
.
此外,如果对您没有帮助,请与我们分享项目MyProject的xxx.csproj
,以便我们更快地解决您的问题。
更新 1
由于您的项目中只有一个目标文件,我建议您可以遵循以下建议:
1)关闭VS Instance,进入你的项目文件夹,删除solution文件夹下的.vs
隐藏文件夹,bin
和obj
文件夹。然后,重新启动您的项目以再次测试。
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"/>
我在名为 .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\
.
此外,如果对您没有帮助,请与我们分享项目MyProject的xxx.csproj
,以便我们更快地解决您的问题。
更新 1
由于您的项目中只有一个目标文件,我建议您可以遵循以下建议:
1)关闭VS Instance,进入你的项目文件夹,删除solution文件夹下的.vs
隐藏文件夹,bin
和obj
文件夹。然后,重新启动您的项目以再次测试。
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"/>