如何在.csproj中引用NuGet包

时间:2019-04-24 11:28:37

标签: c# .net nuget

我需要在.NET Framework控制台应用程序的.csproj文件中使用<attrib> [Docs]元素。

它嵌套在<Target Name="BeforeBuild">元素中,因为在构建之前我需要编辑一些文件的属性,这是.csproj的完整代码:

<Target Name="BeforeBuild">
    <Attrib Files="App.config" ReadOnly="false" />
    <Attrib Files="Ocelot.json" ReadOnly="false" />
    <Attrib Files="OcelotLogging.json" ReadOnly="false" />
</Target>

这样编写代码时,编辑器给我这个错误:Task 'Attrib' is not defined

我尝试了什么?

  • 我将使用<UsingTask>元素,其中参数是NAnt.Core NuGet包的路径。整个代码如下:

    <UsingTask TaskName="Attrib" AssemblyFile="C:\Users\UserName\.nuget\packages\nant.core\0.92.0\lib\net40\NAnt.Core.dll" /> <Target Name="BeforeBuild"> <Attrib Files="App.config" ReadOnly="false" /> <Attrib Files="Ocelot.json" ReadOnly="false" /> <Attrib Files="OcelotLogging.json" ReadOnly="false" /> </Target> 但是错误不会消失。无论如何,当我尝试编译应用程序时,出现以下错误:The "Attrib" task could not be loaded from the assembly C:\Users\UserName\.nuget\packages\nant.core\0.92.0\lib\net40\NAnt.Core.dll. Confirm that the <UsingTask> declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask.

1 个答案:

答案 0 :(得分:1)

我认为您正在混合NAnt和MSBuild任务。

NAnt任务写在.build文件上,并通过将该文件传递给NAnt可执行文件来调用,如解释的here。您使用loadtasks加载它们。

MSBuild tasks不过可以在.csproj文件中随意使用。 您使用usingtask与他们合作。

因此,在您的情况下,您可以使用msbuildtasks package,它也有一个attrib任务。

安装软件包:

  

可以从发行版部分下载最新版本。 https://github.com/loresoft/msbuildtasks/releases

     

也可以通过包名称> MSBuildTasks在nuget.org上获得MSBuild社区任务库。

     

要安装MSBuildTasks,请在程序包管理器控制台中运行以下命令

     

PM> Install-Package MSBuildTasks

安装还确保您随后可以使用csproj中的任务而无需使用usingtask,因此:

<Target Name="BeforeBuild">
    <Attrib Files="App.config" ReadOnly="false" />
    <Attrib Files="Ocelot.json" ReadOnly="false" />
    <Attrib Files="OcelotLogging.json" ReadOnly="false" />
</Target>

请注意,它们是使用MSBuild进行此操作的另一种方法,该方法与您编写的内容最接近。